我正在研究一种可重用的数据库存储库方法,用于使用 EntityFramework 4.3 将实体附加和保存到数据库。
private void SaveObject<T>(T entityToSave, DbSet<T> dbSet) where T : class
{
if (db.Entry(entityToSave).State == EntityState.Detached)
{
if (entityToSave.Id == Guid.Empty) // how do I access the Id property?
dbSet.Add(entityToSave);
else
db.Entry(entityToSave).State = EntityState.Modified;
}
}
我遇到的问题是我需要告诉我的方法哪个属性是 Id,这样我就可以检查它是否已设置。如果它是空的,那么我知道我正在创造一个全新的记录。否则我正在修改现有记录。
我如何告诉我的方法 Id 属性是什么?
最佳答案
您需要一个定义 Id
属性的接口(interface)或基类,并将其用作您的通用约束。示例:
public interface IEntity
{
Guid Id { get; }
}
private void SaveObject<T>(T entityToSave, DbSet<T> dbSet) where T : class, IEntity
{
if (db.Entry(entityToSave).State == EntityState.Detached)
{
if (entityToSave.Id == Guid.Empty) // how do I access the Id property?
dbSet.Add(entityToSave);
else
db.Entry(entityToSave).State = EntityState.Modified;
}
}
关于c# - 如何在 C# 中访问泛型类型的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572461/