2012-03-09 79 views
0

相关项目我有两个对象,如:的EntityFramework获得通过ID或现场

public class Area : IEntity 
    { 
     public virtual int Id { get; set; } 
     public virtual int AreaTypeLookupId { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(100)] 
     public virtual string Name { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(2)] 
     public virtual string VMRegionCode { get; set; } 
     public virtual int GISPrimaryKeyId { get; set; } 
     public virtual string ConcatenatedGISAreaIds { get; set; } 
     public virtual int? ParentAreaId { get; set; } 
     public virtual int? ParentRegionAreaId { get; set; } 
     [Column(TypeName = "char")] 
     [StringLength(3)] 
     public virtual string CostCenterCode { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(64)] 
     public string CreatedByUserName { get; set; } 
     public DateTime CreatedDateTime { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(64)] 
     public string LastModifiedByUserName { get; set; } 
     public DateTime? LastModifiedDateTime { get; set; } 

     // Navigation properties 
     public virtual AreaTypeLookup AreaTypeLookup { get; set; } 
    } 

public class AreaTypeLookup : IEntity 
    { 
     [Column("Id")] 
     public virtual int AreaTypeLookupId { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(100)] 
     public virtual string Name { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(10)] 
     public virtual string ShortName { get; set; } 
     public virtual int? AreaTypeLevelLookupId { get; set; } 
     public virtual int? OperationTypeLookupId { get; set; } 
     public virtual int? ParentAreaTypeLookupId { get; set; } 
     public bool IsAvailableToSetBudgetAgainst { get; set; } 
     public int DisplaySortOrder { get; set; } 
     public bool IsProtected { get; set; } 
     public DateTime? DeletedDateTime { get; set; } 
     public int? ManagedByServiceTypeLookupId { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(64)] 
     public string CreatedByUserName { get; set; } 
     public DateTime CreatedDateTime { get; set; } 
     [Column(TypeName = "varchar")] 
     [StringLength(64)] 
     public string LastModifiedByUserName { get; set; } 
     public DateTime? LastModifiedDateTime { get; set; } 
    } 

我想要的是让地方areatypelookupid = 3。对于这个区域键入名称为“区域”的所有领域

什么是获得代码的可维护性方面的最佳方式:

此:

var areas = _unitOfWork.AreaRepository.GetAll().Where(x => x.AreaTypeLookupId == 3); 

或这个:

var areas = _unitOfWork.AreaRepository.GetAll().Where(x => x.AreaTypeLookup.Name == "region"); 

在那里我猜“区域”应该从一个资源文件真正成为。

回答

0

通常,您将要使用主键,因为它应该是不可变的。但是,如果您可以保证查找名称不会更改,则可以容忍按名称进行搜索。我说可以容忍的原因是因为在主要关键字上运行查询将在数据库上更有效率,这是不可变的。