Я упростил то, что мне нужно, на примере книг (надеюсь, контекст все еще позволяет смысл).
Контекст таков: у меня есть канал, в этом канале указаны книги, продаваемые поставщиками, и цена, по которой они хотят их продавать. Мы являемся реселлером, клиент может выбрать книгу у поставщика и купить ее напрямую у него. Но мы хотим найти способ отменить цену книги для всех поставщиков.
Код: Выделить всё
public class SupplierBook
{
public int SupplierBookId { get; set; }
[ForeignKey("BookOverride")]
public int BookId { get; set; }
public int BookSupplierId { get; set; }
public decimal Price { get; set; }
public virtual BookOverride? BookOverride { get; set; }
}
public class BookOverride
{
[Key]
public int BookId { get; set; }
public decimal PriceOverride { get; set; }
[ForeignKey("BookId")]
public SupplierBook SupplierBook { get; set; }
}
public class Test
{
public void DoTest()
{
var bookFromSup1 = new SupplierBook() { SupplierBookId = 0, BookId = 10, BookSupplierId = 1, Price = 10.50M };
var bookFromSup2 = new SupplierBook() { SupplierBookId = 1, BookId = 10, BookSupplierId = 2, Price = 90.50M };
var bookFromSup3 = new SupplierBook() { SupplierBookId = 2, BookId = 11, BookSupplierId = 2, Price = 5.50M };
var priceOverride = new BookOverride() { BookId = 10, PriceOverride = 15.0M };
var context = new BookDBContext();
context.SupplierBooks.Add(bookFromSup1);
context.SupplierBooks.Add(bookFromSup2);
context.SupplierBooks.Add(bookFromSup3);
context.BookOverrides.Add(priceOverride);
context.SaveChanges();
var bookWithOveride = context.SupplierBooks
.Where(o => o.BookId = 10 && o.BookSupplierId = 2)
.Include(o => o.BookOverride).First();
Debug.WriteLine(bookWithOveride.BookOverride.PriceOverride); // prints 15.00
var bookWithNoOveride = context.SupplierBooks
.Where(o => o.BookId = 11 && o.BookSupplierId = 2)
.Include(o => o.BookOverride).First();
Debug.WriteLine(bookWithNoOveride.BookOverride == null); // prints true
}
}
ограничение внешнего ключа не выполнено (
Код: Выделить всё
.......Код: Выделить всё
...Код: Выделить всё
...Подробнее здесь: https://stackoverflow.com/questions/790 ... lationship
Мобильная версия