我有这样的低音课:
public abstract class Document
{
[Dapper.Contrib.Extensions.Key]
public Int32 DoucmentID {get;set;}
public String Name {get;set;}
}
然后我
public class Proposal : Document
{
public String ProposalStuff {get;set;}
}
现在我想编写一些使用Dapper.Contrib
处理更新的通用方法//某个类在哪里..
public bool Update<T> (T as item) where T : class
{
using (var sqlConnection = new SqlConnection(_connectionString))
{
sqlConnection.Open();
return sqlConnection.Update<T>(item);
}
}
现在我要更新对象:
public bool UpdateProposal(Repository.Proposal prop)
{
return orm.UpdateItem<Repository.Proposal>(prop);
}
Dapper.Contrib给了我这条消息:
{“实体必须至少有一个[Key]或[ExplicitKey]属性”}
我无法找到使用抽象基类的示例。我想也许UpdateProposal的类型应该是Document但我得到相同的消息。
感谢您的帮助。我确信这很简单。
编辑:我找到了答案的一半。我开始测试只使用一个类(没有抽象)并得到相同的错误。经过进一步研究:我发现使用Key [Dapper.Contrib.Extensions.Key]可以解决问题。虽然来自ystem.ComponentModel.DataAnnotations的密钥似乎也可以工作?
如果不是这让我有点难过,因为任何想要使用ORM的服务都必须知道Dapper,我希望避免使用映射器。
现在尝试再次分解课程,看看是否至少解决了这个问题。
微米。
答案 0 :(得分:0)
所以,只要我使用Dapper Key注释与ComponentModel,它就可以与抽象类一起工作。
可能是Dapper Key只是支持的。但这将是另一个问题。
微米。