EFCode-First中LookupTables的最佳实践我正在用EF做第一个项目,打算去code-first模型。我试图找到一些关于处理相当经典的“查找表”场景的指导。我正在处理一个非常典型的情况,我将坚持使用地址数据。所以,我有一个简单的AddressDTO...publicclassAddress{publicintId{get;放;}publicvirtualstringStreetAddress1{get;放;}publicvirtualstringStreetAddress2{get;放;}publicvirtualstringCity{get;放;}publicvirtualstringState{get;放;}publicvirtualstringZipCode{get;放;在状态属性中,我想存储标准的美国两个字母状态代码。出于验证目的,我希望在生成的地址表和相当标准的状态查找表之间有一个标准的一对多外键关系。该表可能包含一个ID、一个双字母代码和包含州全名的第三列。我希望使用此状态查找表来填充和说明下拉样式框等,并作为地址实体中提交的状态的验证。很普通的东西。所以,我有几个简单的(我希望)问题。我是否需要创建一个实体来表示仅供EF创建表的State实体,或者我是否可以将表创建过程包装在DBCreation策略中并在那里播种?在我想显示“状态选择器”的任何地方创建该实体作为“视图模型”是否有意义我真的只想将两个字母的状态代码存储在地址实体中,但这是否有意义,或者会使它成为状态实体的导航属性然后显示更有意义吗?我在这里清楚地表达了我的观点,所以如果我不清楚,请随时询问更多细节。提前致谢。合适的用户界面?我会让状态成为它自己的类并处理导航属性。}publicvirtualstringStreetAddress1{get;放;}publicvirtualstringStreetAddress2{get;放;}publicvirtualstringCity{get;放;}publicvirtualUSStateState{get;放;}publicvirtualstringZipCode{get;放;}}publicclassUSState{publicintId{get;放;}公共字符串代码{get;放;}公共字符串文本{得到;该表将被创建,但您可以在Seed()方法中填充它。您不一定需要使用视图模型,但使用共享视图在编辑表单中显示状态是有意义的。你没有提到MVC,但如果你正在使用它,就像推送[UIHint("StatePicker")]publicvirtualUSStateState{get;一样简单。放;在您的POCO或视图模型中-取决于您的视图使用的内容。然后在Views/Shared/EditorTemplates中添加一个partialviewStatePicker.cshtml,就会这样@inheritsSystem.Web.Mvc.WebViewPage@Html.DropDownListFor(m=>m,newSelectList((IEnumerable)ViewBag.USStatesAll,"Id","Name",Model==null?1:Model.Id),"Choose--")在您的视图中与@Html.EditorFor(m=>m.State)组合。导航属性。您的数据库会将USStateID存储为外键,但您的应用程序可以根据需要使用addr.State.Code或addr.State.Text。它更灵活。是的,您可以创建一个新的DBCreation脚本来扩展原始脚本并创建一个独立于实体框架的状态表。如果我是你,我会创建国家实体。如果不创建状态实体,最后你需要在代码中创建它,但是填充这个实体将是一个问题,你需要使用sql(你可以将这些数据存储在xml中,这似乎比SQL更好)。如果您决定将表存储在数据库中并通过创建实体直接使用它,那么将其作为导航属性是更好的选择,因为您可以在延迟加载或通过包含它加载时直接使用它。以上就是《C#学习教程:EFCode-First中查找表最佳实践》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
