sna*_*nap 2 c# entity-framework
我们的团队正致力于在广泛的现有数据库模式上实现代码优先的EF框架.我们真正希望拥有的一个基础接口是我们所有不同实体都将实现的.我们打算在这个基本接口中定义的所有内容都是Id字段和Name字段,因为我们所有的数据库表都具有这两个属性的概念.这种方法有很多好处,因为在我们的应用程序中有很多情况,你需要的一个对象是它的Id和一些描述性文本(它的'Name')所以能够编程到接口而不是实现可以提供相当多的灵活性.
问题出现了,因为并非我们架构中的所有表都有基于整数的PK,有些表有字符串,guid等.所以我们无法为接口中的Id字段定义真正的"类型",而不是可以容纳的对象所有的可能性.然后问题变成EF不喜欢对象作为其PK的想法,所以当尝试指定HasKey(o => o.Id)时它会抱怨.
无论如何,你们有没有想过要完成我们想要在这里完成的工作?谢谢!
使用泛型.
public interface IEntityBase<TKey>
{
TKey Id { get; set; }
string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以像这样实现它
public class IntKeyEntity : IEntityBase<int>
{
int Id { get; set; }
string Name { get; set; }
}
public class StringKeyEntity : IEntityBase<string>
{
string Id { get; set; }
string Name { get; set; }
}
//etc
Run Code Online (Sandbox Code Playgroud)