Sql server 如何在Orchard中使用带int键(非标识)的IRepository

Sql server 如何在Orchard中使用带int键(非标识)的IRepository,sql-server,asp.net-mvc,insert,orchardcms,irepository,Sql Server,Asp.net Mvc,Insert,Orchardcms,Irepository,我正在使用Orchard IRepository管理数据并保存到数据库。。。这就是我想做的 我的班级是: public class SocietaRecord { public virtual int Id { get; set; } public virtual string Club { get; set; } public virtual string Email { get; set; } } 我的迁移: SchemaBuilder.CreateTable("S

我正在使用Orchard IRepository管理数据并保存到数据库。。。这就是我想做的

我的班级是:

public class SocietaRecord
{
    public virtual int Id { get; set; }
    public virtual string Club { get; set; }
    public virtual string Email { get; set; }
}
我的迁移:

SchemaBuilder.CreateTable("SocietaRecord", table => table
    .Column<int>("Id", column => column.PrimaryKey())
    .Column<String>("Club", c => c.Nullable())
    .Column<String>("Email", c => c.Nullable())
);
这会失败,因为它会忽略我的Id,并(错误地)假定表具有自动编号键

这就是错误:

NHibernate.Exceptions.GenericADOException: could not insert:
[Match.Models.SocietaRecord]
[SQL: INSERT INTO Match_SocietaRecord (Club, Email) VALUES (?, ?); 
select SCOPE_IDENTITY()] ---> System.Data.SqlClient.SqlException: 
Cannot insert the value NULL into column 'Id', table ORCHARD.dbo.Match_SocietaRecord'; 
column does not allow nulls. INSERT fails.
如何向存储库解释如何查看表,并且在并没有标识的情况下不假定标识,以便我可以插入自己的id? (是的,我在创建之前在对象记录上提供了有效Id)

编辑: 我在代码中挖掘了一点,我认为:

  • 由于Fluent NHibernate:自动映射约定导致标识不正确

  • Orchard使用IAutomappingAlternation覆盖不正确的假设

因此,我可以在以下内容中更改我的问题:

如何为我的类定义自定义IAutomappingChange来解释Orchard我的Id不是身份

或者(换句话说)

在哪里可以找到orchard中的“自动映射配置”,如自动映射文档中所述


(…“您可以通过覆盖自动映射配置中的IsId方法来修改自动映射发现身份的方式。”…)

Orchard中的存储库实现供更高级别的内容管理API使用。它不是设计或打算作为一个通用的存储库实现或ORM的替代品(我们有nHibernate来做这件事)。你应该直接使用nHibernate。OrchardPo模块中的低级示例:

我不太清楚。我是否应该使用IRepository在几个表上执行简单的crud操作,仅仅因为存储库在没有标识的地方采用了标识?如果它与所做的约定和假设兼容,为什么不兼容,但这里的情况似乎不是这样。
NHibernate.Exceptions.GenericADOException: could not insert:
[Match.Models.SocietaRecord]
[SQL: INSERT INTO Match_SocietaRecord (Club, Email) VALUES (?, ?); 
select SCOPE_IDENTITY()] ---> System.Data.SqlClient.SqlException: 
Cannot insert the value NULL into column 'Id', table ORCHARD.dbo.Match_SocietaRecord'; 
column does not allow nulls. INSERT fails.