gpt4 book ai didi

c# - 实现接口(interface)的类型的 Entity Framework DBSet 扩展

转载 作者:行者123 更新时间:2023-11-30 21:49:09 27 4
gpt4 key购买 nike

我正在尝试创建一些 DbSet<T>扩展名 T工具 INWatchStandardEntity .

这是其中之一的任何示例:

public static class NWatchDbSetExtensions
{
public static Int32 GenerateId<TEntity>(this DbSet<INWatchStandardEntity> dbSet, string name)
where TEntity : INWatchStandardEntity, new()
{
NWatchObjectType objectType = Common.ToObjectType(dbSet.GetType());
return Common.GetObjectIdFromName(objectType, name);
}
}

但是,当我尝试使用 GenerateId(string name) 时,编译效果很好在 DbSet 上继承自 INWatchStandardEntity ,例如:

using (var context = Application.GetDbContext()) {
context.Nodes.GenerateId<INWatchStandardEntity>("name");
}

我收到以下消息:

'DbSet<Node>' does not contain a definition for 'GenerateId' and the best extension method overload 'NWatchDbSetExtensions.GenerateId(DbSet<INWatchStandardEntity>, string)' requires a receiver of type 'DbSet<INWatchStandardEntity>'

有没有办法使这个和其他扩展方法可用,以便我可以将它用于实体实现 INWatchStandardEntity 的任何 DbSet?

最佳答案

经过一些实验,这是正确的做法:

public static Int32 GenerateId<TEntity>(this DbSet<TEntity> dbSet, string name) 
where TEntity : class, INWatchStandardEntity
{
NWatchObjectType objectType = Common.ToObjectType(dbSet.GetType());
return Common.GetObjectIdFromName(objectType, name);
}

关于c# - 实现接口(interface)的类型的 Entity Framework DBSet 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174442/

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