gpt4 book ai didi

entity-framework - 我如何以编程方式检索实体的主键(在 Entity Framework 4 中)?

转载 作者:行者123 更新时间:2023-12-02 05:13:35 24 4
gpt4 key购买 nike

我有这个实现存储库模式的基本抽象类

public abstract class Repository<T> : IRepository<T> where T : class
{
private ObjectSet<T> _entitySet;
private ObjectContext _dataContext;

public Repository(ObjectContext context)
{
_dataContext = context;
_entitySet = _dataContext.CreateObjectSet<T>();
}

public T FindByID(int id)
{
//??????

}
}

现在我需要知道主键列(对应的属性)来实现FyndByID方法。

建议主键不是复合的,它的数据类型是int

最佳答案

实体类的关键属性用这个属性标记:

[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]

请注意,EntityKeyProperty 设置为 true。为 T 类型的具有此属性的属性查找此属性,并将其值与传递的 id 进行比较:

//Property that holds the key value
PropertyInfo p = typeof(T).
GetProperties().FirstOrDefault(
x => x.GetCustomAttributes(typeof(EdmScalarPropertyAttribute), false)
.OfType<EdmScalarPropertyAttribute>()
.Where(y => y.EntityKeyProperty == true)
.Count() > 0);

//Return first item having the passed id or null
return _entitySet.FirstOrDefault(x => (int)p.GetValue(x, null) == id);

关于entity-framework - 我如何以编程方式检索实体的主键(在 Entity Framework 4 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com