失蹤我試圖訪問DbSet<EntityClass>.Load()
函數加載的實體。該功能在EF 6.0中不再存在;經過一定的調查,我發現它是EF擴展庫中定義的擴展方法的一部分。DbSet <entity> .Load()函數在EF 6.0
我得到EF 6.0擴展庫中的引用的NuGet軟件包,但好像它不再支持。我試圖通過調用.ToList()
做功能的替代,但在處理該方法返回我的內部異常:
({"The column name is not valid. [ Node name (if any) = Extent1,Column name = HasErrors ]"})
我仔細檢查了映射類對數據庫表,但它看起來不錯。不知道我錯過了什麼。下面是我的映射類的代碼:
internal class CustomerMapping : EntityTypeConfiguration<Customer>
{
public CustomerMapping()
{
this.HasKey(t => t.Id);
this.Property(t => t.Id).HasColumnName("CUSTOMER_ID");
this.Property(t => t.Name).HasMaxLength(30).HasColumnName("NAME");
this.Property(t => t.Email).HasMaxLength(30).HasColumnName("EMAIL");
this.Property(t => t.PhoneNo).HasMaxLength(100).HasColumnName("PHONE_NO");
this.Property(t => t.MobileNo).HasMaxLength(100).HasColumnName("MOBILE_NO");
this.Property(t => t.Address1).HasMaxLength(100).HasColumnName("ADDRESS1");
this.Property(t => t.Address2).HasMaxLength(100).HasColumnName("ADDRESS2");
this.Property(t => t.CustomerType).HasMaxLength(100).HasColumnName("CUSTOMER_TYPE");
this.Property(t => t.Notes).HasMaxLength(100).HasColumnName("NOTES");
this.ToTable("CUSTOMERS");
}
}
下面是對數據庫所做的實際調用:
internal class EntityService : IEntityService
{
private ObservableCollection<Customer> customers;
public DBContextManager DataBaseContext { get; set; }
public ObservableCollection<Customer> Customers
{
get
{
if (customers == null && DataBaseContext != null)
{
// DataBaseContext.Set<Customer>().Load()
DataBaseContext.Set<Customer>().ToList();
customers = DataBaseContext.Set<Customer>().Local;
}
return customers;
}
}
}
也請任何一個可以指出ToList()
和Load()
之間的區別?
根據MSDN,['Load'](http://msdn.microsoft.com/en-us/library/system.data.entity.dbextensions .load%28v = vs103%29.aspx)「相當於在不實際創建列表的情況下調用」ToList「,它是'IQueryable'上的擴展,位於'System.Data.Entity'命名空間中,所以確保你爲此添加了'使用'。 – UIlrvnd
是的,我正在使用該命名空間。但我怎樣才能調試哪些列名未被發現被投訴? –
哦,'ToList()'不填充'Local'。 – UIlrvnd