C# 在EF代码中查找表的最佳实践
我正在用EF做我的第一个项目,我计划采用代码优先的模式。我试图找到一些关于处理相当经典的“查找表”场景的指导 我正在处理一种非常规范的情况,在这种情况下,我将持久化地址数据。所以,我有一个简单的地址DTOC# 在EF代码中查找表的最佳实践,c#,entity-framework-4.1,poco,code-first,C#,Entity Framework 4.1,Poco,Code First,我正在用EF做我的第一个项目,我计划采用代码优先的模式。我试图找到一些关于处理相当经典的“查找表”场景的指导 我正在处理一种非常规范的情况,在这种情况下,我将持久化地址数据。所以,我有一个简单的地址DTO public class Address { public int Id { get; set; } public virtual string StreetAddress1 { get; set; } public virtual st
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; }
}
在state属性中,我想存储标准的美国两个字母的州代码。出于验证目的,我希望在生成的地址表和相当标准的状态查找表之间有一个标准的一对多外键关系。该表可能包含一个ID、两个字母的代码和第三列以包含完整的州名称
我希望使用这个状态查找表来填充和状态下拉样式框,等等,还可以作为对地址实体中的状态字段的验证。相当普通的东西。所以,我有几个简单的(我希望是)问题
Seed()
方法中填充它
@inherits System.Web.Mvc.WebViewPage<USState>
@Html.DropDownListFor(m => m, new SelectList((IEnumerable<USState>)ViewBag.USStatesAll,
"Id",
"Name",
Model==null?1:Model.Id),
"Choose--")
在你看来
3-我个人使用一个实体来做这件事,只是因为它可以避免用户的排版错误。如果在许多实体(现在或以后)中使用,我还可以确保一致性。但是,如果您的应用程序相当小,或者不需要太多验证,我看不出有多少相反的指示可以直接将这两个字母放在您的地址实体中。如果您使用的是ViewModels呢?我试过上面的方法,但似乎不起作用?如何在Id和对象上的查找实体之间映射?@Burt我上面的示例并不完整,但该技术适用于使用viewmodel或直接使用模型。首先使用EF代码,框架为您进行映射。我对EF和MVC有很好的(以及最近的)介绍
[UIHint("StatePicker")]
public virtual USState State { get; set; }
@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)