保存实体会导致重复插入查找数据
|
我正在使用EF 4.1“代码优先”来创建数据库和对象。
鉴于:
public class Order
{
public int Id { get; set; }
public string Name { get; set; }
public virtual OrderType OrderType { get; set; }
}
public class OrderType
{
public int Id { get; set; }
public string Name { get; set; }
}
订单具有一种订单类型。订单类型只是一个查询表。值不变。使用Fluent API:
//Order
ToTable(\"order\");
HasKey(key => key.Id);
Property(item => item.Id).HasColumnName(\"order_id\").HasColumnType(\"int\");
Property(item => item.Name).HasColumnName(\"name\").HasColumnType(\"string\").HasMaxLength(10).IsRequired();
HasRequired(item => item.OrderType).WithMany().Map(x => x.MapKey(\"order_type_id\")).WillCascadeOnDelete(false);
//OrderType
ToTable(\"order_type\");
HasKey(key => key.Id);
Property(item => item.Id).HasColumnName(\"order_type_id\").HasColumnType(\"int\");
Property(item => item.Name).HasColumnName(\"name\").HasColumnType(\"nvarchar\").HasMaxLength(100).IsRequired();
现在,在我们的应用程序中,我们加载所有查找数据并将其缓存。
var order = new Order
{
Name = \"Bob\"
OrderType = GetFromOurCache(5) //Get order type for id 5
};
var db = _db.GetContext();
db.Order.Add(order);
db.SaveChanges();
我们的您的美丽订单已保存,但使用EF提供的新订单类型。因此,现在我们的数据库中有两个相同的订单类型。我该怎么做才能改变这种行为?
TIA
没有找到相关结果
已邀请:
3 个回复
茶鬼失形
之前执行此操作:
惜堡沁戚
浩挎
在SaveChanges覆盖中。 再一次感谢你的帮助。