EF Code-First 中查找表的最佳实践

2024-04-14

我正在使用 EF 做我的第一个项目,并且计划采用代码优先模型。我正在尝试找到一些有关处理相当经典的“查找表”场景的指导。

我正在处理一个非常规范的情况,我将保留地址数据。所以,我有一个简单的地址 DTO...

public class Address
    {
        public int Id { get; set; }
        public virtual string StreetAddress1 { get; set; }
        public virtual string StreetAddress2 { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string ZipCode { get; set; }
    }

在州属性中,我想存储标准的美国两字母州代码。出于验证目的,我希望在生成的地址表和相当标准的状态查找表之间有一个标准的一对多外键关系。该表可能包含一个 ID、两个字母的代码以及包含完整州名称的第三列。

我希望使用此状态查找表来填充和状态下拉样式框等,并充当对地址实体中提交的状态的验证。相当常见的东西。所以,我有几个简单的(我希望)问题。

  1. 我是否需要创建一个实体来代表国家实体 让 EF 创建表,或者我可以只包含表创建 DBCreation 策略中的进程并在那里播种?
  2. 创建该实体是否有意义,只是用作“视图” 模型”用于任何我想显示“状态选择器”的地方
  3. 我真的只想将两个字母的状态代码存储在地址中 实体,但这有意义吗?还是仅仅这样更有意义? 使其成为状态实体的导航属性然后显示?

我在表达自己的观点时遇到了一些困难,所以如果我不清楚,请随时询问更多细节。

提前致谢。 在用户界面中适当吗?


  1. 我将使状态成为它自己的类和地址的导航属性。
public class Address
{
    public int Id { get; set; }
    public virtual string StreetAddress1 { get; set; }
    public virtual string StreetAddress2 { get; set; }
    public virtual string City { get; set; }
    public virtual USState State { get; set; }
    public virtual string ZipCode { get; set; }
}

public class USState
{
    public int Id { get; set; }
    public string Code { get; set; }
    public string Text { get; set; }
}

使用代码第一个 EF 将创建表,但您可以将其填充到Seed() method.

  1. 您不一定需要使用视图模型,但使用共享视图在编辑表单中显示状态是有意义的。你没有提到MVC,但如果你使用它,那就很简单了
[UIHint("StatePicker")]
public virtual USState State { get; set; }

在您的 POCO 或视图模型中 - 取决于您的视图使用的内容。然后在 Views/Shared/EditorTemplates 中,添加一个部分视图 StatePicker.cshtml,它看起来像这样

@inherits System.Web.Mvc.WebViewPage<USState>
@Html.DropDownListFor(m => m, new SelectList((IEnumerable<USState>)ViewBag.USStatesAll,
    "Id",
    "Name",
    Model==null?1:Model.Id),
    "Choose--")

结合

@Html.EditorFor(m => m.State)

在你看来。

  1. 导航属性。您的数据库会将 USState id 存储为外键,但您的应用程序可以根据需要使用 addr.State.Code 或 addr.State.Text。它更加灵活。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF Code-First 中查找表的最佳实践 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 如何让 AudioKit 从远程 URL 传输音频文件?

    我正在尝试在 iOS 应用程序 Swift 4 中播放来自 URL 的音频文件 我希望它们在下载时缓冲和播放 我非常喜欢 AudioKit 但是对于我来说 我无法弄清楚如何让它读取远程文件 有什么建议么 你找不到它 因为它不在那里 我们从未
  • SQLite Python 插入 - 提供的绑定数量不正确

    如果这是多余的 我很抱歉 我花了很多时间试图找到答案 但提供的技巧似乎没有任何作用 我正在尝试使用 Python 将股票数据的 csv 文档读入 SQLite 雅虎财经 Ticker Open High Low Close Volume A
  • 回调中的 Tornado IOLoop 异常 Celery 工作线程中没有

    我在用tornado ioloop inside celery工人 因为我需要使用 mongodb class WorkerBase gen engine def foo self args callback bar Python Cele
  • 绑定中的 JAXB 空节点

    JAXB无法解析此示例的绑定
  • UTF-8 编码、JSP、jQuery、Spring 的问题

    我在 apache tomcat 6 中有一个带有 spring jsp 和 jquery 的 Web 应用程序 一个 jsp 页面有一个表单 该表单通过 jquery 进行的 ajax 调用将数据发送到我后端的 Spring MultiA
  • .net core azure部署失败:项目文件不存在

    我在 Azure 中设置了一个应用程序服务应用程序 该应用程序设置为在提交到团队服务 git 存储库时部署 到目前为止 这一直工作正常 但部署失败 并显示 MSBUILD error MSB1009 Project file does no
  • php 字符串末尾的 Substr?

    我有这种数组 我会让它变得非常简单易懂 picture artist2 1 thumb jpg artist2 2 jpg artist2 3 thumb jpg artist2 4 jpg artist2 5 thumb jpg 现在我想
  • WPF 断边

    我在使用 WPF 时遇到了一个相当奇怪的问题 当我将按钮放置在窗体上时 它们在设计时看起来很好 在 Windows XP 上看起来也很好 但当应用程序在 Windows 7 上运行时 边缘会损坏 Here is a screen shot
  • 访问 WinForms 中的 ToolStripMenuItem 子项

    H all 我在 Winform 中创建了一个菜单条 但不是动态的 而且这一切都是不可见的 当用户拥有权限时才可见 我的用户名之一拥有完全的权利 为此我写了下面的代码 private void menuActive MenuStrip me
  • 尝试加载动画时 Resources$NotFoundException

    我们在 Google Play 市场上的应用程序在某些设备上抛出了一个奇怪的异常 我看到以下堆栈跟踪 android content res Resources NotFoundException File res anim ani in
  • 使用 perl 包时将参数传递给它

    如何在使用包时传递一些参数 例如 use Test More tests gt 21 我无法找到有关此功能的任何有价值的文档 通过这样的论点有什么优点和缺点吗 use My Module LIST https metacpan org po
  • React Native改变监听端口

    我正在使用 React Native Android 并且在 Android 设备上部署应用程序时遇到问题 当我跑步时 react native启动 它不会在端口上启动开发服务器8081 我尝试了以下提到的一些选项 https reactn
  • 我设置了 hellomap 示例并收到以下错误

    我正在 Android Studio 中工作 并且在运行时不断收到此错误 E CL magma ERROR CL magma Unable to open shader file shaders gles2 0 Primitive shad
  • NotifyPropertyChanged 线程安全吗?

    我正在看NotifyPropertyChanged from INotifyPropertyChanged并注意到在 Microsoft 的示例中 如下所示 http msdn microsoft com en us library sys
  • Android:socket.io io.socket.engineio.client.EngineIOException:XHR 轮询错误

    有时我会收到此错误 io socket engineio client EngineIOException xhr 轮询错误 我的连接到套接字的代码 try HostnameVerifier myHostnameVerifier new H
  • 如何使 SendKeys 在 IBM Host Access Library 中同步动作

    我用用于 COM 自动化的 IBM 主机访问类库 https www 01 ibm com support knowledgecenter SSEQ5Y 6 0 0 com ibm pcomm doc books html host acc
  • google api 控制台删除了我注册的应用程序

    几个月前 我在 Google 开发者控制台中注册了两个 Android 应用程序 以使用 Google 地图 Android API 版本 2 今天 当我登录注册另一个应用程序时 我注意到 Google API 控制台没有显示我以前注册的应
  • “download_slot”在 scrapy 中如何工作

    我在 scrapy 中创建了一个脚本来解析author name来自其着陆页的不同帖子 然后将其传递到parse page方法使用meta关键字以打印post content随着author name同时 我用过下载槽在元关键字中 据称该关
  • hibernate_unique_key表是如何在新数据库中创建的?

    我正在尝试使用 NHibernate 创建我的第一个测试应用程序 如下所示NHibernate 2 0 初学者指南 https rads stackoverflow com amzn click com 1847198902 该示例在映射中
  • EF Code-First 中查找表的最佳实践

    我正在使用 EF 做我的第一个项目 并且计划采用代码优先模型 我正在尝试找到一些有关处理相当经典的 查找表 场景的指导 我正在处理一个非常规范的情况 我将保留地址数据 所以 我有一个简单的地址 DTO public class Addres