我需要使用Fluent API和Entity Framework 5 Code First检索为字段指定的maxlength值。
我已经看过几个使用MetadataWorkspace的示例,但是当您使用Fluent API时它不起作用。 例如,我尝试了这段代码,但MaxLenght的值始终为null:
ObjectContext.MetadataWorkspace.GetItem<GlobalItem>(typeof(TEntity).FullName, DataSpace.OSpace).MetadataProperties[field].TypeUsage.Facets["MaxLength"].Value
在Fluent API配置文件中,我有以下代码用于必要的属性:
Property(t => t.Name).HasMaxLength(50);
我知道映射正在运行,因为如果我尝试在该字段中保存超过50个字符的对象,则会失败。
我只需要获得maxlenght值的指导,但要给出一些目标:
提前致谢。
答案 0 :(得分:0)
您应该使用存储模型。检查Enum DataSpace上的文档
使用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);
}
}
}