在项目中使用数据库的最佳方法是什么。 [英] What is the Best way to use Database in the project.

查看:59
本文介绍了在项目中使用数据库的最佳方法是什么。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我的数据库在SQL Server中,它已经通过使用连接字符串(SQL客户端)与Asp.Net站点正常工作但我想要以架构方式和多用途方式实现它。

所以我对此有一些疑问。



我是否需要在项目中使用实体框架 ??

我是否需要在WCF Web服务中使用Entity Framework然后访问Project中的Web服务 ??



请建议我如何在项目中使用数据库。

解决方案

如果您正在尝试构建一个独立于数据库的库,那么企业库数据访问应用程序 [ ^ ]可以帮到你。


是的,你可以使用实体框架。所有数据库操作都可以在应用程序中使用单独的Project(数据访问层)。


如果我的问题是正确的,我理解你可能直接使用ADO.NET连接到数据库



如果你正在使用ADO.Net



  public  IEnumerable< instructor> GetInstructorsADONET()
{
var connString = ConfigurationManager.ConnectionStrings [ SchoolContext]的ConnectionString。
列表<讲师> instructors = new List< instructor>();
使用 var conn = new SqlConnection(connString))
{
conn.Open();

var cmd = new SqlCommand( SELECT Person.PersonID,Person.LastName,Person.FirstName,Course.Title,Course.Credits +
FROM Course INNER JOIN +
CourseInstructor ON Course.CourseID = CourseInstructor.CourseID RIGHT OUTER JOIN +
Person ON CourseInstructor.PersonID = Person.PersonID +
WHERE(Person.Discriminator ='讲师') +
ORDER BY Person .PersonID,conn);
var reader = cmd.ExecuteReader();

int currentPersonID = 0 ;
讲师currentInstructor = null ;
while (reader.Read())
{
var personID = Convert.ToInt32(reader [ PersonID]);
if (personID!= currentPersonID)
{
currentPersonID = personID;
if (currentInstructor!= null
{
讲师。加入(currentInstructor);
}
currentInstructor = new 讲师();
currentInstructor.LastName = reader [ LastName]。ToString();
currentInstructor.FirstMidName = reader [ FirstName]。ToString();
}
if (reader [ 标题]!= DBNull.Value)
{
var course = 课程();
course.Title = reader [ Title]。ToString();
course.Credits = Convert.ToInt32(reader [ Credits]);
currentInstructor.Courses.Add(course);
}
}
如果(currentInstructor!= null
{
instructors.Add(currentInstructor);
}

reader.Close();
cmd.Dispose();
}
返回讲师;
} < / 讲师 > < / 讲师 > < / 讲师 >







为了避免编写和测试更多代码,可以使用ORM(对象关系映射)



  public  IEnumerable< Instructor> GetInstructors()
{
List< Instructor>教官;
使用 var db = new SchoolContext())
{
instructors = db.Instructors.Include( Courses )ToList();
}
返回讲师;
}







根据您的申请和任何情况,使用实体框架不是强制性的计划迁移数据。





参考此链接



< a href =http://msdn.microsoft.com/en-us/library/ms178359(v=vs.110).aspx#orm> http://msdn.microsoft.com/en-us/library/ ms178359(v = vs.110).aspx#orm [ ^ ]



http://msdn.microsoft.com/en-us/library/jj653752(v = vs.110)的.aspx [< a href =http://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx\"target =_ blanktitle =New Window> ^ ]


Hi Everybody,

My Database is in SQL Server and it is already working fine with Asp.Net site by using Connection String ( SQL Client ) but i want to implement it to an architectured way and multipurpose way.
So I have some question Regarding That.

Should i need to Use Entity Framework on Project??
Should I need to Use Entity Framework in WCF web service then access web service in Project??

Pls suggest me how to use database with the project.

解决方案

If you are trying to build a database independent library, the Enterprise Library Data Access Application[^] could help you.


Yes, You can use entity framework. all of you database operation you can use separate Project (Data Access Layer) in the application.


If I'm correct from your question I understood that u might be using ADO.NET directly for connecting to database

if u are using ADO.Net

public IEnumerable<instructor> GetInstructorsADONET()
{
    var connString = ConfigurationManager.ConnectionStrings["SchoolContext"].ConnectionString;
    List<instructor> instructors = new List<instructor>();
    using (var conn = new SqlConnection(connString))
    {
        conn.Open();

        var cmd = new SqlCommand("SELECT Person.PersonID, Person.LastName, Person.FirstName, Course.Title, Course.Credits " +
            "FROM Course INNER JOIN " +
                  "CourseInstructor ON Course.CourseID = CourseInstructor.CourseID RIGHT OUTER JOIN " +
                  "Person ON CourseInstructor.PersonID = Person.PersonID " +
                  "WHERE (Person.Discriminator = 'Instructor') " +
                  "ORDER BY Person.PersonID", conn);
        var reader = cmd.ExecuteReader();

        int currentPersonID = 0;
        Instructor currentInstructor = null;
        while (reader.Read())
        {
            var personID = Convert.ToInt32(reader["PersonID"]);
            if (personID != currentPersonID)
            {
                currentPersonID = personID;
                if (currentInstructor != null)
                {
                    instructors.Add(currentInstructor);
                }
                currentInstructor = new Instructor();
                currentInstructor.LastName = reader["LastName"].ToString();
                currentInstructor.FirstMidName = reader["FirstName"].ToString();
            }
            if (reader["Title"] != DBNull.Value)
            {
                var course = new Course();
                course.Title = reader["Title"].ToString();
                course.Credits = Convert.ToInt32(reader["Credits"]);
                currentInstructor.Courses.Add(course);
            }
        }
        if (currentInstructor != null)
        {
            instructors.Add(currentInstructor);
        }

        reader.Close();
        cmd.Dispose();
    }
    return instructors;
}</instructor></instructor></instructor>




To avoid more code to be written and tested you can use ORM(object Relational Mapping)

public IEnumerable<Instructor> GetInstructors()
{
    List<Instructor> instructors;
    using (var db = new SchoolContext())
    {
        instructors = db.Instructors.Include("Courses").ToList();
    }
    return instructors;
}




Its not compulsory to use Entity framework depending upon your application and for any plans to migrate the data.


Refer this links

http://msdn.microsoft.com/en-us/library/ms178359(v=vs.110).aspx#orm[^]

http://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx[^]


这篇关于在项目中使用数据库的最佳方法是什么。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆