我在这里运行这个示例:https ://github.com/jagregory/fluent-nhibernate/blob/master/src/Examples.FirstProject/Program.cs
String 类型的所有 C# 属性都映射到 TEXT sql 字段,而不是
nvarchar 或 varchar ,除了它是默认设置。
我该如何改变呢?
我知道我可以这样做:
Map(x => x.Name).CustomSqlType("nvarchar").Length(50); // does not work !!!
Map(x => x.Name).CustomSqlType("nvarchar (50)"); // does work !!!
但我不想改变每个领域......
更新:...因此我可以通过 => 进行自定义约定
我要做的是编写一个自定义的 Convention 类,例如:
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)));
}
}
有人可以正确上述代码吗?我测试了它,它没有工作,为什么......