我需要首先使用 Fluent API 和实体框架 5 代码检索为字段指定的 maxlength 值。
我已经看过几个使用MetadataWorkspace的例子,但是当你使用Fluent API时它不起作用。例如,我尝试了以下代码,但MaxLenght的值始终为空:
ObjectContext.MetadataWorkspace.GetItem<GlobalItem>(typeof(TEntity).FullName, DataSpace.OSpace).MetadataProperties[field].TypeUsage.Facets["MaxLength"].Value
在 Fluent API 配置文件中,我有以下代码用于必要的属性:
Property(t => t.Name).HasMaxLength(50);
我知道映射正在工作,因为如果我尝试在该字段中保存超过 50 个字符的对象,它会失败。
我只需要获取最大值的指导,但为了给出一些观点,目标是:
- 创建新的 Foo 对象
- 使用 Fluent API 获取为 Bar 属性定义的最大长度值。
- 根据最大长度将某些规则应用于要分配给 Bar 的字符串。
- 救。
提前谢谢。
应使用存储模型。在枚举数据空间上检查文档使用EntityType
项。
[TestMethod]
public void EFToolsTest() {
var context = new BosMasterDbContext("MYDBCONTEXT");
ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
MetadataWorkspace workspace = objContext.MetadataWorkspace;
var xyz = workspace.GetItems<EntityType>(DataSpace.SSpace);
foreach (var ET in xyz) {
foreach (var sp in ET.Properties) {
Debug.WriteLine(sp.Name + ":" + sp.MaxLength);
}
}
}