У меня есть таблица соединения с дополнительным полем, относящимся к соединению:
VirtualDatastreamId INT NOT NULL
DatastreamId INT NOT NULL
FormulaElement INT NOT NULL
Все столбцы являются первичными ключами.
POCO, с которым он сопоставлен:
public class VirtualDatastreamMap
{
public virtual Datastream Datastream { get; set; }
public virtual VirtualDatastream VirtualDatastream { get; set; }
public virtual string FormulaElement { get; set; }
}
У меня нет свойств внешнего ключа в модели, так как для меня концепция внешнего ключа является деталью реализации и должна быть инкапсулирована отношениями, определенными классом. Я бы предпочел не добавлять их, если это возможно.
Как мне сопоставить это с Fluent API? Я надеялся на что-то вроде ниже (что, к сожалению, не работает):
modelBuilder.Entity<VirtualDatastreamMap>()
.HasKey(vdm =>
new
{
DatastreamId = vdm.Datastream.Id,
VirtualDatastreamId = vdm.VirtualDatastream.Id,
FormulaElement = vdm.FormulaElement
});
Имена полей анонимного типа должны быть названы, поскольку объект не может иметь два поля с одинаковыми именами.
Я вижу из этого вопроса , что эта проблема была поднята в ответе, но, похоже, дальше ничего не происходит.
Если это невозможно, какой вариант лучше?
- Добавление свойств внешнего ключа в модель
- Добавить поле
Id
в базу данных и модель
Спасибо