Я ищу, чтобы получить некоторые дополнительные данные при поиске некоторых объектов. Вот где я до сих пор.
Таблица деталей будет иметь одну и ту же деталь много раз (несколько наборов), и когда я пытаюсь применить миграцию, я получаю ошибку с HasForeignKey (e => new {e .Number, e.ColorId}); как это не уникально. Есть ли другой способ сделать это?
Редактировать: мне не нужно добавлять запись "MyPart" при добавлении набора.
// Tables
public class Set
{
public int Id { get; set; }
public string Number { get; set; }
public string Name { get; set; }
public int NumberOfParts { get; set; }
public IList<Part> Parts
}
public class Part
{
public int Id { get; set; }
public string Number { get; set; }
public int ColorId { get; set; }
public int Quantity { get; set; }
public Set Set { get; set; }
}
public class MyParts
{
public int Id { get; set; }
public string Number { get; set; }
public int ColorId { get; set; }
public int Quantity { get; set; }
public string Location { get; set; }
}
/ Repo Method
public async Task<Set> GetSetAsync(string number, CancellationToken cancellationToken = default)
{
//My Call to get the data
var set = await Get<Set>()
Where(s => s.Number == number)
.Include(x => x.Parts)
.SingleOrDefaultAsync(cancellationToken);
return set;
}
Я хочу получить MyParts.Location и MyParts.Quantity в составе GetSetAsyn c ()
Я добавил этот
modelBuilder.Entity<Part>()
.HasOptional(e => e.MyPart) // I may not have the part
.WithOne()
.HasForeignKey(e => new { e.Number, e.ColorId });
Требуемый запрос
Select set.*,
part.*
myParts.Location,
myParts.Quantity
FROM Set set
INNER JOIN Part part on set.Id = part.setId
LEFT JOIN MyParts myParts on my Parts.ColorId = part.ColorId and myParts.Number = part.Number
Заранее спасибо