Eli*_*eth 2 convention sqlite string text fluent-nhibernate
我在这里运行这个示例:https://github.com/jagregory/fluent-nhibernate/blob/master/src/Examples.FirstProject/Program.cs
String类型的所有C#属性都映射到TEXT sql字段而不是
nvarchar OR varchar,除了它作为DEFAULT设置.
我怎么能改变呢?
我知道我可以这样做:
Map(x => x.Name).CustomSqlType("nvarchar").Length(50); // does not work !!!
Map(x => x.Name).CustomSqlType("nvarchar (50)"); // does work !!!
Run Code Online (Sandbox Code Playgroud)
但我不想改变每个领域......
更新:...因此我可以通过=>进行自定义约定
我要做的是编写一个自定义的公约类,如:
public class ColumnStringToNVarCharConvention : IPropertyConvention, IPropertyConventionAcceptance
{
public void Apply(IPropertyInstance instance)
{
instance.CustomSqlType("nvarchar");
}
public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
{
criteria.Expect(x => x.Property.GetType().Equals(typeof(string)));
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以正确上述代码吗?我测试了它,它没有用,为什么...
你正在使用SQLite,对吗?这就是你的问题所在.在另一篇文章的答案中,它的描述更好,但SQLite没有与其他数据库相同的数据类型.它不是一个流畅的NHibernate问题,它是NHibernate处理几乎无数据类型的数据库的方式.
对于更严格的数据库,Fluent NHibernate默认使用更合理的数据类型.它因数据库而异,但它是一个nvarchar字符串.
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |