我的表结构是这样的
Orders
------
Id int identity
OrderDate smalldatetime
OrderStatusid tinyint
Products
--------
Id int identity
Name varchar(50)
OrderDetails
------------
Id int identity
OrderId int (fkey)
ProductId int (fkey)
Amount decimal
Rate decimal
我正在尝试使用以下代码使用 Entity Framework 进行插入操作
这是插入的最佳方法吗?
我对从上下文对象获取完整产品项目的方式不满意,而不能只分配一个简单的 productId 值
using (MyContextEntities ctx = new MyContextEntities())
{
Orders newOrder = new Orders()
{
Name = "Gayle Wynand",
OrderDate = DateTime.Now,
IsComplete = true,
Comments = "test",
OrderStatusId = 2,
IsActive = true
};
OrderDetails ode = new OrderDetails();
ode.Products = ctx.Products.First(p => p.Id == 2); // any other way?
ode.Quantity = 2;
ode.Rate = 5.2;
newOrder.OrderDetails.Add(ode);
OrderDetails ode2 = new OrderDetails();
ode2.Products = ctx.Products.First(p => p.Id == 3); // any other way?
ode2.Quantity = 3;
ode2.Rate =6.5;
newOrder.OrderDetails.Add(ode2);
ctx.AddToOrders(newOrder);
ctx.SaveChanges();
}
这是进行主细节插入的正确方法还是有更好/另一种方法。
最佳答案
你现在正在做的事情会很好。
如果您想在分配 ode.Products 时避免执行数据库查询,则可以使用以下替代方法:
// substitute your actual qualified entity set name
ode.ProductsReference.EntityKey =
new EntityKey("MyEntities.ProductsEntitySetName", "Id", 2);
这更快,但可读性较差。此外,在您加载它之前,Products 属性将为空。但是对于插入,这通常是可以的。
关于.net - Entity Framework 中主细节/多表插入的最佳实践/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158795/