Когда я защищаю базу данных с помощью Entity Framework Core, как предотвратить двунаправленные свойства? Я хочу разрешить только одностороннюю навигацию. Есть ли параметр командной строки командной строки?
В классе продукта я хочу удалить это свойство
public virtual ICollection<CustomerTransaction> CustomerTransaction { get; set; }
В основном только транзакция клиента должна иметь навигацию, поскольку она имеет фактический внешний ключ. Хотите удалить последнюю строку и аналогичным образом иметь более 1000 таких табличных объектов. Требуется параметр командной строки EF scaffold или автоматизация (возможно, с помощью Regex или другого инструмента).
База данных:
create table dbo.CustomerTransaction(
CustomerTransactionId int NOT NULL,
ProductId int NULL,
Quantity int NULL,
CustomerLastName varchar(255) NULL,
constraint PK_CustomerTransactionId primary key clustered (CustomerTransactionId ASC))
alter table dbo.CustomerTransaction add constraint fk_CustomerTransaction_Product_ProductId FOREIGN KEY(ProductId) REFERENCES dbo.Product (ProductId)
Entity Framework:
public partial class CustomerTransaction
{
public int CustomerTransactionId { get; set; }
public int? ProductId { get; set; }
public int? Quantity { get; set; }
public string CustomerLastName { get; set; }
//Keep this line since it has the foreign key
public virtual Product Product { get; set; }
}
public partial class Product
{
public Product()
{
CustomerTransaction = new HashSet<CustomerTransaction>();
}
public int ProductId { get; set; }
public string ProductName { get; set; }
public decimal? Amount { get; set; }
// REMOVE THIS LINE
public virtual ICollection<CustomerTransaction> CustomerTransaction { get; set; }
}
Результат:
Требуется только этот способ,
storeDbContext.CustomerTransaction.Include(c => c.Product).ToListAsync()
Не так,
storeDbContext.Product.Include(c => c.CustomerTransaction).ToListAsync()
Использование EF Core 2.2,