我正在尝试在通用存储库中创建一个更新方法作为 LINQ to SQL 数据访问层。
我有一个这样的实体:
[Table]
public class Product
{
[Column(IsPrimaryKey = true, IsDbGenerated = true,
DbType = "Int NOT NULL IDENTITY")]
public int Id { get; private set; }
[Column(UpdateCheck = UpdateCheck.Never)]
public string Name { get; set; }
....
}
Update Check = true
正如@jeff Atwood 在这篇文章中建议的那样,我为 id 的所有字段设置了除此之外的所有字段asModified
,并将 attach 方法中的属性设置为 true,我在这篇文章中发现如下:
public void Update(T entity)
{
_db.GetTable<T>().Attach(entity, true);
_db.SubmitChanges();
}
但我一直遇到同样的例外:
如果实体声明了版本成员或没有更新检查策略,则实体只能在没有原始状态的情况下附加为已修改。
所以有什么问题 ???
除了创建时间戳列作为版本号之外,您是否推荐任何其他方法来在通用存储库中创建更新方法。