- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Orchard IRepository 来管理数据并保存到数据库...这就是我想要做的。
我的类(class)是:
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 不是 IDENTITY
现在,当我调用 Repository Create 时,会执行以下插入操作:(用sql profiler抓取)
exec sp_executesql N'INSERT INTO Match_SocietaRecord
(Club, Email) VALUES (@p0, @p1);
select SCOPE_IDENTITY()',N'@p0 nvarchar(4000),@p1 nvarchar(4000),
@p0=N'Test',@p1=NULL
失败是因为它忽略了我的 ID 并(错误地)假设 Tables 有一个自动编号键。
这是错误:
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 使用 IAutoMappingAlteration 覆盖不正确的假设
所以我可以更改我的问题:
我如何为我的类定义一个自定义的 IAutoMappingAlteration 来向 Orchard 解释我的 Id 不是一个身份?
或者(换句话说)
我在哪里可以找到自动映射文档中描述的 orchard 中的“自动映射配置”?
https://github.com/jagregory/fluent-nhibernate/wiki/Auto-mapping
(...“您可以通过覆盖自动映射配置中的 IsId 方法来修改自动映射器发现身份的方式。”...)
最佳答案
Orchard 中的存储库实现供更高级别的内容管理 API 使用。它不是设计或打算作为通用存储库实现或 ORM 的替代品(为此我们有 nHibernate)。你应该直接使用 nHibernate。 OrchardPo 模块中的低级示例:https://bitbucket.org/bleroy/orchardpo/src
关于sql-server - 如何在 Orchard 中使用带有 int key (NOT IDENTITY) 的 IRepository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14580845/
我是一名优秀的程序员,十分优秀!