C# 如何在不显式设置每个属性的情况下加载实体框架数据对象
我希望能够做到以下几点:C# 如何在不显式设置每个属性的情况下加载实体框架数据对象,c#,entity-framework,C#,Entity Framework,我希望能够做到以下几点: var book = new Book(); book.LoadByPrimaryKey(id); //returns bool 我遇到的问题是,我不知道是否有一种简单的方法可以将数据加载到使用实体框架生成的对象中。我知道如何获取填充对象所需的信息,但是有没有一种简单的方法可以填充对象的所有属性,而不必显式地遍历每个属性并将其设置为所需的值?在C#中,我不能简单地键入: this = db.Books.Single(d => d.BookId == id);
var book = new Book();
book.LoadByPrimaryKey(id); //returns bool
我遇到的问题是,我不知道是否有一种简单的方法可以将数据加载到使用实体框架生成的对象中。我知道如何获取填充对象所需的信息,但是有没有一种简单的方法可以填充对象的所有属性,而不必显式地遍历每个属性并将其设置为所需的值?在C#中,我不能简单地键入:
this = db.Books.Single(d => d.BookId == id);
相反,我必须显式设置每个属性:
var book = db.Books.Single(d => d.BookId == id);
this.Title = book.Title;
this.PageCount = book.PageCount;
...
当想要加载一个对象时,有没有办法做到这一点?也许有DbDataReader?我使用数据读取器加载数据表,但不知道如何使用它们填充对象。也许我想得太多了。当您需要将所有属性从一个对象复制到另一个对象时,您可以
class BookDA // DAO = data access
{
private MyDbConnection db;
public BookTO Get()
{
var book = db.Books.Single(d => d.BookId == id);
return book;
}
}
class BookTO // TO = transport object
{
public string Name { get; set; }
}
在上面的代码中,每个职责都与不同的类相关联。这个答案太长了,但我希望它能有所帮助。用例是什么,即为什么需要它
db.Books.Single(d=>d.BookId==id)
已经返回一个(新的)加载的对象。这不是EF的用途。EF是一个严格的ORM,具有更方便的功能。其他ORM将此作为其包的一部分。我们目前使用EntitySpaces并将其升级到EntityFramework,因为ES不再受支持。是的,我们可能最终不得不做一件或多件这样的事情。我们正在将一个使用EntitySpace(具有内置加载方法)的遗留软件更改为使用EF6?我需要创建一个新的、不同的类,将所有运行查询和存储过程的方法放在其中?是的,这就是我的想法。