ADO.NET实体数据模型删除的问题,在线等待!!【100分】
rczjp 2010-10-02 05:52:56 原帖:
http://topic.csdn.net/u/20101001/17/89c26540-2130-42a6-95e5-0926fd22d133.html
存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OptimisticConcurrencyException: 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。
源错误:
public void DeleteObject(Guid id)
{
var item = new Product() { ProductGuid = id };
db.Product.Attach(item);
db.ObjectStateManager.ChangeObjectState(item, EntityState.Deleted);
db.SaveChanges();
}
=====实体是下面这样,是不是有写法错误===
C# code
[MetadataType(typeof(Product_MetaData))]
public partial class Product
{
public Product()
{
this.ProductGuid = Guid.NewGuid();
this.AddTime = DateTime.Now;
}
}
public class Product_MetaData
{
public int ID { get; set; }
public Guid ProductGuid { get; set; }
public string ProductName { get; set; }
public DateTime AddTime { get; set; }
}
需要说明的是:ID是递增主键,我使用
var item = new Product() { ID = 1 };这样来删除是OK
ProductGuid 这个开始不是主键也不是外键,我设置成了主键也不可以,WHY?
var item = new Product() { ProductGuid = new Guid("220efb48-6284-4ef1-88cc-c1383ba674c6") }; 这样删除不了
和var item = new Product() { ID = 1 };这样来删除却OK
真的很纳闷,怎么会这样呢??