1
我試圖映射一個類,看起來像下面,但我得到一個關於Facility.Projects屬性是一個接口異常。顯式映射實體框架中的接口成員7
屬性Facility.Projects屬於接口類型IProject。如果它是導航屬性,則通過將該屬性轉換爲映射的實體類型來手動配置該屬性的關係,否則忽略模型中的屬性。
public class Facility : BaseData
{
[ForeignKey("ClientId")]
public Client Owner { get; set; }
public List<IProject> Projects { get; protected set; }
public Facility()
{
Initialize();
}
private void Initialize()
{
Projects = new List<IProject>();
}
}
我已經制定通過了的DbContext類OnModelCreating
方法Facility
被映射到其他屬性,但我沒有真正看到任何東西,似乎是正確的位置比HasColumnType
施放此等也出現錯誤。
public class FacilityRepository : BaseRepository<Facility>, IFacilityRepository
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder
.Entity<Client>()
.Property(f => f.Id)
.ForSqliteHasColumnName("ClientId");
modelBuilder
.Entity<Project>()
.Property(x => x.Id)
.ForSqliteHasColumnName("ProjectId");
// area where I've tried and failed to find a good spot to do some manual casting
modelBuilder
.Entity<Facility>()
.Property(f => f.Projects)
.HasColumnType<Project>(new PropertyBuilder());
}
}
任何人都可以指向正確的方向嗎?我在文檔中沒有看到任何可能有用的東西?或者,我是否應該按規則不要這樣做?
爲什麼在這裏使用接口,當你知道所需的確切類型?改變你的'Projects'屬性爲'List' –
DavidG
老實說,只是爲了知道它是否可以完成@DavidG。我仍然在構建與此相關的Contexts的其餘部分,我很確定我會遇到不知道確切類型的情況,如果無法完成,它不能完成(我確信我會在這些情況下找到解決方法) - 只是不知道我是否錯過了一些大的東西 – prestonsmith
有一個非常好的理由如果您已經將存儲庫設計爲一個接口例如,你的業務邏輯實際上應該是一個正常的和好的事情,我現在繼續尋找答案,除非你已經發現它,但忘記在這裏分享它;; – Arwin