Cal*_*yen 5 size nhibernate metadata
有没有办法使用SessionFactory.GetClassMetadata()或者您知道的任何其他方法动态获取varchar作为NHibernate类的字符串属性基础的列的最大大小?
为了澄清,我不打算读取NHibernate映射文件中指定的长度属性.我想推断出实际的数据库列长度.
请参阅下面的代码,了解从NHIB元数据中获取字符串列大小的两种不同方法.
干杯,
Berryl
[Test]
public void StringLength_DefaultIs_50_v1()
{
_metadata = _SessionFactory.GetClassMetadata(typeof(User));
var propertyType = _metadata.GetPropertyType("Email") as StringType;
Assert.That(propertyType.SqlType.Length, Is.EqualTo(50));
}
[Test]
public void StringLength_DefaultIs_50_v2()
{
var mapping = _Cfg.GetClassMapping(typeof(User));
var col = mapping.Table.GetColumn(new Column("Email"));
Assert.That(col.Length, Is.EqualTo(50));
}
Run Code Online (Sandbox Code Playgroud)
当生成会话工厂时,NH 引擎不会检查(并检索)底层数据库是什么。对于您的情况,您可以提供一个“丰富”的映射,以便在运行时提供所有可用的内容,或者创建一个函数,当您需要它。
请注意,丰富的映射还允许 NH 引擎进行一些自动化(例如检查传递的字符串的大小是否大于 (n)varchar 列的长度)
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |