我有以下代码来创建用于测试的内存中SQLite DB:
Configuration config = null;
FluentConfiguration fluentConfiguration = Fluently.Configure().Database(SQLiteConfiguration.Standard.InMemory().ShowSql()
).Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<ReturnSourceMap>();
m.HbmMappings.AddFromAssemblyOf<ReturnSourceMap>();
m.FluentMappings.AddFromAssemblyOf<EchoTransaction>();
}).ExposeConfiguration(c => config = c);
ISessionFactory sessionFactory = fluentConfiguration.BuildSessionFactory();
_session = sessionFactory.OpenSession();
new SchemaExport(config).Execute(true, true, false, _session.Connection, Console.Out);
似乎对大多数事情都很好,但遗憾的是它创建的所有列都不可为空。
例如我有两个类:
InternalFund
和ExternalFund
。两者都继承自Fund
,并且都持久保存到同一个表中。
ExternalFund
有一列Manager_ID
,InternalFund
没有。不幸的是,这意味着我无法持久化InternalFund
,因为它会抛出SQL异常。
我的测试不需要参考完整性,所以如果我能让所有列都可以为空,那就很高兴。
有谁知道怎么做?
由于
斯图
答案 0 :(得分:1)
您应该尝试使用Conventions的FluentNhibernate功能。如果您查看this链接,您会看到第一个示例是将可空性设置为默认值。
答案 1 :(得分:1)
事实上,我发现隐藏在一个子方法中,特定属性在映射中没有设置空值。删除它会对问题进行排序。
感谢您发布关于约定的内容,我会看一下,因为我还有另一个问题可能会排序。
干杯
斯图