2015-02-11 44 views
0

我想将用户输入数据的每个字段映射到与数据库字段相关联,该字段可以通过读取数据库表定义并在剃刀视图中手动设置设置最大值或在我的视图模型中,但如果数据库管理员通过SQL Server更改最大字符数限制,则需要使其动态化,它将自动更新文本字段中字符的最大限制。 我想从实体框架中读取它并将其设置在剃刀视图中。这有可能以任何方式使其动态化。读取实体框架字段的最大长度并将其分配给剃刀视图中的文本框

如何从剃须刀视图中读取最大长度字段。

+2

数据库管理员不应该随意改变应用程序的数据库的模式,而无需修改应用程序本身 - 似乎是一个食谱为灾难。但是,下面的问题的答案将检索一个nvarchar字段的属性:http://stackoverflow.com/questions/18611878/find-variable-length-for-sql-server-datatype-nvarchar-from-c-sharp - 代码 – user1666620 2015-02-11 15:48:50

回答

2

进一步搜索后,我弄清楚如何从实体框架读取架构领域的最大长度

public void read() 
     { 
      using (var db = new PortalContext()) 
      { 
       var objectContext = ((IObjectContextAdapter)db).ObjectContext; 
       var container = objectContext.MetadataWorkspace.GetEntityContainer(objectContext.DefaultContainerName, DataSpace.CSpace); 
       int maxLength = (int)container.EntitySets["Customers"].ElementType.Properties["LastName"].MaxLength; 
      } 
     } 
+0

杰出的答案。提供上下文:即,(1)“PortalContext”应该由实体模型的名称替换,继承自DbContext,以及(2)实体集合的名称必须与数据库匹配,不一定是实体的名称在表格中如果他们的名字已经被单数化(例如客户到客户)。此外,还需要两个使用方法:使用System.Data.Entity.Core.Metadata.Edm; using System.Data.Entity.Infrastructure; – 2016-07-27 20:30:56