阅读此MSDN文章,标题为“使用ObjectSet( Entity Framework )”,它显示了两个有关如何添加产品的示例。一个为3.5,另一个为4.0。
http://msdn.microsoft.com/en-us/library/ee473442.aspx
由于缺乏知识,我可能在这里完全错过了一些东西,但是我从未添加过这样的产品:
//In .NET Framework 3.5 SP1, use the following code: (ObjectQuery)
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
// Add the new object to the context.
context.AddObject("Products", newProduct);
}
//New in .NET Framework 4, use the following code: (ObjectSet)
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
// Add the new object to the context.
context.Products.AddObject(newProduct);
}
我不会做任何一种方式,而只是使用:
// (My familiar way)
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
// Add the new object to the context.
context.AddToProducts(newProduct);
}
这三种方式有什么区别?
“我的方式”是使用ObjectQuery的另一种方式吗?
谢谢,
高汉
最佳答案
它们所有人都做相同的事情,只是语法略有不同。
首先,让我们看一下3.5方式和“您的方式”。如果查看EDMX的代码生成文件,则会看到类似以下内容的内容:
public void AddToProducts(Product product)
{
base.AddObject("Products", product);
}
因此,这两种方法是完全相同的,只是代码中的魔幻字符串已替换为永远不会出错的代码生成版本。
“.NET 4方式”执行相同的操作,但执行方式不同。它使用强类型的
ObjectSet<T>
,它允许您动态创建强类型的引用,而无需使用字符串。但是,在将对象添加到上下文的情况下,我并没有真正的优势,除了它可以使您在引用实体方面更加一致-您可以使用相同的属性从上下文中读取它们(Context.Products
)用来编写它们。
关于entity-framework - 通过 Entity Framework 添加 "Product"的3种方法。有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810988/