Orm DapperContrib-使用抽象类更新

Orm DapperContrib-使用抽象类更新,orm,dapper,dapper-contrib,Orm,Dapper,Dapper Contrib,我有这样的低音班: 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.C

我有这样的低音班:

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);
            }
}
公共bool更新(T作为项),其中T:class
{
使用(var sqlConnection=newsqlconnection(_connectionString))
{
sqlConnection.Open();
返回sqlConnection.Update(项目);
}
}
现在我要更新对象:

   public bool UpdateProposal(Repository.Proposal prop)
   {
            return orm.UpdateItem<Repository.Proposal>(prop);
   }
public bool UpdateProposal(Repository.prop提案)
{
返回orm.UpdateItem(prop);
}
短小精悍。Contrib给了我这个信息:

{“实体必须至少有一个[Key]或[ExplicitKey]属性”}

我找不到使用抽象基类的示例。我想UpdateProposal的类型应该是Document,但我得到了相同的消息

谢谢你的帮助。我相信这很简单

编辑:我找到了一半的答案。我开始只使用一个类(没有抽象)进行测试,但得到了相同的错误。经过进一步研究:

我发现使用Key[Dapper.Contrib.Extensions.Key]可以解决这个问题。似乎来自System.ComponentModel.DataAnnotations的键也应该工作

如果不是的话,这让我有点难过,因为任何想要使用ORM的服务都必须了解Dapper,我希望避免使用mapper

现在,我们将尝试再次拆分该类,看看它是否至少解决了眼前的问题


M.

所以,是的,毕竟它可以很好地处理抽象类,只要我使用简洁的键注释vs.ComponentModel

可能只有Dapper密钥才是受支持的。但这将是另一个问题

M