【问题标题】:Read Maximum length of Entity Framework field and assign to textbox in Razor View读取实体框架字段的最大长度并分配给 Razor 视图中的文本框
【发布时间】:2015-02-11 15:26:47
【问题描述】:

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

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

【问题讨论】:

  • DBA 不应该在不修改应用程序本身的情况下任意更改应用程序数据库的架构——这似乎是灾难的根源。但是,以下问题的答案将检索 nvarchar 字段的属性:stackoverflow.com/questions/18611878/…

标签: c# sql-server asp.net-mvc entity-framework razor


【解决方案1】:

经过进一步搜索,我知道如何从实体框架架构中读取字段的最大长度

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;
            }
        }

【讨论】:

  • 出色的答案。提供上下文:即(1)“PortalContext”应该替换为实体模型的名称,继承自DbContext,以及(2)实体集的名称必须与db匹配,不一定是实体的名称如果他们的名字已经被单数化(例如,客户到客户)。此外,还需要两个使用:使用 System.Data.Entity.Core.Metadata.Edm;使用 System.Data.Entity.Infrastructure;
  • 仅供参考,这只是 EF6。不适用于 EF Core。
猜你喜欢
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
相关资源
最近更新 更多