У меня есть таблица, которую я назову Batch
, и у нее есть схема, которая выглядит примерно так:
BatchId | Created Date | CreatedBy | EngineTypeId
----------------------------------------------------
1 | 2018-05-11 | dbo | 1
Столбец EngineTypeId
привязан к другой таблице, которая называется BatchEngineSubType
и имеет такую схему:
BatchEngineSubTypeId | EngineSubType | Description
---------------------|---------------|------------
1 | TestEngine | Dummy text
Обычно я могу получить доступ к данным в моей таблице через веб-страницу с использованием стандартного MVC.Тем не менее, моя проблема с вышесказанным заключается в том, что мне нужен мой окончательный вывод на экран, чтобы он выглядел так:
BatchId | Created Date | CreatedBy | EngineSubType
----------------------------------------------------
1 | 2018-05-11 | dbo | TestEngine
Сначала я создал представление, которое извлекло из моей таблицы Batch
и соединилось на BatchEngineSubType
таблица, чтобы получить желаемый прогноз.Но, делая это таким образом, я не могу позволить пользователям фактически изменять данные и обновлять соответствующие таблицы.
Я немного погуглил и нашел учебник по fluent api , чтобы я мог делать все, что мне нужно, все в C # вместо SQL.
Следуя инструкции, я создал новую модель под названием BatchEngine
, которая имеет следующее:
public class BatchEngine : IObjectWithState
{
[Key]
public int BatchEngineSubTypeId { get; set; }
public string EngineType { get; set; }
public string Desciption { get; set; }
public State State { get; set; }
}
В моей модели Batch
я внес некоторые изменения, чтобы использовать новую модель, чтобыfluent API
подберет его:
public class Batch_Adjustment : IObjectWithState
{
[Key]
public int BatchId { get; set; }
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
public int BatchEngineTypeId { get; set; }
[ForeignKey("BatchEngine")]
public string Engine { get; set; }
public virtual BatchEngine BatchEngine { get; set; }
}
Последний шаг, в моем OnModelCreating
методе, я пытаюсь связать их вместе следующим образом:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Types<IObjectWithState>().Configure(c => c.Ignore(p => p.State));
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.HasDefaultSchema("dbo");
modelBuilder.Entity<BatchEngine>()
.HasMany(b => b.Desciption).WithMany(i => i.)
.Map(t => t.MapLeftKey()
.MapRightKey()
.ToTable("vwBatchRetention"));
modelBuilder.Entity<Batch>().ToTable("Batch").HasKey(e => e.BatchId);
}
Это впоследний шаг, который у меня проблемы с окончанием.Я правильно настроил это?Как вы увидите в части, которая имеет. WithMany
часть в скобках не завершена.Это потому, что когда я ввожу .
, ничего не появляется.
Что я сделал не так?