Вам необходимо изменить имя сгенерированной таблицы: Как указать сопоставление основной таблицы Entity Framework?
Либо использовать:
[Table("CountriesCustomTableName")]
public class Country{ x, y, z }
, либо переопределить OnModelCreatingвот так:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Country>(entity => {
entity.ToTable("CountriesCustomTableName");
});
}
Не забудьте полностью указать имена классов, иначе вы запутаетесь или получите неоднозначные ошибки компиляции
Редактировать
ЕслиВы пытаетесь отобразить две разные модели сущностей в одну и ту же таблицу. Похоже, что ваш шаблон или дизайн могут быть улучшены.
Я бы посоветовал вам либо использовать полную модель предметной области, но только половинуЗаполните его, когда вы вводите свою «полудоменную модель»
public class Country {
public string X { get; set; }
public string Y { get; set; }
public string Z { get; set; }
}
var country1 = new Country() { X = "A", Y = "B", Z = "C" };
var country2 = new Country() { X = "A", Z = "C" };
context.Countries.Add(country1);
context.Countries.Add(country2);
Или (более вероятно) Это некоторая форма запаха кода, и вам необходимо абстрагировать необязательные значения в другую таблицу, например:
public class Country {
public string X { get; set; }
public string Z { get; set; }
}
public class CountryYInfo {
public string Y { get; set; }
public Country Country { get; set; }
public int CountryId { get; set; }
}
var country1 = new Country() { X = "A", Z = "C" };
var countryInfo = new CountryYInfo { Y = "B", Country = country1 };
var country2 = new Country() { X = "A", Z = "C" };
context.Countries.Add(country1);
context.Countries.Add(country2);