我想在我的项目中使用CommonLibrary .NET,但我有遗留代码,无法进行Code First建模,我使用VS2010工具从数据库生成我的模型。
但似乎设计工具生成的开箱即用实体不能与CommonLibrary中的存储库一起使用,它会给出错误:
错误1“RepositoryTest.UserInfo”类型不能用作类型 泛型类型或方法中的参数'T' 'ComLib.Entities.RepositorySql< T>'。没有隐含的参考 从'RepositoryTest.UserInfo'转换为 'ComLib.Entities.IEntity'。
是否有人也遇到过这个问题,如果是这样,可能有一个简单的解决方案?
我还想知道是否有人有一个很好的替代框架或项目来实现支持EF实体的存储库。 我是TDDing所以我想在同一个框架中在内存中实现一个存储库,这就是我首先选择这个框架的原因。
答案 0 :(得分:1)
看起来ComLib.Entities.RepositorySql<T>
有一个通用约束,类似于
public class RepositorySql<T> where T : IEntity
{
// ...
}
这意味着您的Entity类必须实现此接口ComLib.Entities.IEntity
才能用作存储库的泛型类型参数。所以你的班级必须如下:
public class UserInfo : IEntity
{
// implementation of IEntity
// look in documentation what you have to implement
// or hit ctrl-period in Visual Studio on IEntity
// to get a default implementation
// your custom code
}