【发布时间】:2016-04-20 11:59:16
【问题描述】:
大家好,我想使用Entity Framework 和C# 保存复杂数据。我有 2 个类 Product 和 Order 定义如下
产品类别
public class Product
{
[Key]
public int Id { get; set; }
public string SKU_Code { get; set; }
public string Product_Name { get; set; }
public string Quantity { get; set; }
public string Price { get; set; }
public string Image { get; set; }
public DateTime Created_Date { get; set; }
public DateTime Modified_Date { get; set; }
}
订单类
public class Order
{
[Key]
public long ID { get; set; }
public string Order_Id { get; set; }
public string Payment_Type { get; set; }
public string Customer_Name { get; set; }
public string Shipping_Address { get; set; }
public DateTime Order_Date { get; set; }
public DateTime Modified_Date { get; set; }
public bool Flag { get; set; }
public List<Product> ProductDetails { get; set; }
}
我想保存数据订单详情,我的一段代码如下。
public Order Add(Order odrerDetails)
{
using (var context = new EcommerceDBContext())
{
var MyOrder_Id = Helper.Random(7); //Generate random orderID from my class
foreach (var detail in odrerDetails.ProductDetails)
{
odrerDetails.Order_Id = MyOrder_Id;
odrerDetails.Quantity = Convert.ToInt32(detail.Quantity);
odrerDetails.Amount = Convert.ToDouble(detail.Price);
//Other Details
context.objOrderListing.Add(odrerDetails);
}
context.SaveChanges();
return odrerDetails;
}
}
这给了我完美的数据,但是当涉及到 context.SaveChanges(); 它返回的是我的错误。
保存不为其关系公开外键属性的实体时发生错误。 EntityEntries 属性将返回 null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地处理保存时的异常。
【问题讨论】:
-
什么是 Add_Product?
-
错字只有
Product -
复杂的数据,呵呵:)
-
Orders 实体的 ProductDetails 属性上没有外键属性
-
@SabyasachiMishra 我认为你把整个 Add 方法弄错了。我想这个想法是你有一个产品列表,你想将订单保存在数据库中,订单中有多个产品?根据您的代码,您正在添加多个订单。
标签: c# asp.net-mvc entity-framework entity-framework-6