通过 NHibernate 元数据查找基础列大小
有没有办法使用 SessionFactory.GetClassMetadata() 或您知道的任何其他方法来动态获取 NHibernate 下的 varchar 列的最大大小类的字符串属性?
澄清一下,我不想读取 NHibernate 映射文件中指定的长度属性。我想推断实际的数据库列长度。
Is there a way to use SessionFactory.GetClassMetadata()
, or any other method you're aware of, to dynamically get the maximum size of a varchar
column that underlies an NHibernate class' string property?
To clarify, I'm not looking to read a length attribute that's specified in the NHibernate mapping file. I want to deduce the actual database column length.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅下面的代码,了解从 NHib 元数据获取字符串的列大小的两种不同方法。
干杯,
贝里尔
See the code below for two different ways you can get the column size for a string from NHib metadata.
Cheers,
Berryl
当生成会话工厂时,NH 引擎不会检查(并检索)底层数据库是什么。对于您的情况,您可以提供一个“丰富”的映射,以便在运行时提供所有可用的内容,或者创建一个函数,当您需要它。
请注意,丰富的映射还允许 NH 引擎进行一些自动化(例如检查传递的字符串的大小是否大于 (n)varchar 列的长度)
When the Session factory is generated the NH engine does not check (and retrieve) what the underlying database is. For your case either you provide a "rich" mapping to have everything available at runtime, OR make a function that reads the necessary information from the DB (ie select * from sys.columns ..... for sql-server) when you need it.
Mind you that a rich mapping also allows the NH engine to make some automations (like checking if the size of the string passed is larger than the length of the (n)varchar column)