Я немного запутался, как Entity Framework отслеживает ссылочный Id любого объекта.
На самом деле, я мигрирую данные из одной базы данных в другую.Итак, у меня есть две сущности, имеющие отношение основной детали: 1. QuestionMaster 2. ListName
QuestionMasterId - это FK в ListName.
Теперь нет необходимости для каждого вопроса в списке, поэтомуЯ должен продолжать добавлять вопросы в QuestionMaster, пока не найду вопрос, с которым список связан только тогда, когда мне нужно будет создать ListName, но соответствующий ListMasterId должен быть назначен ListName.
Ниже подробно поясняется, Это был сложный код, я удалил часть кода, чтобы его было легче понять, не беспокойтесь о свойствах:
foreach (var Question in _tshQuestionMaster_local)
{
// adding new question
DataAccess.Hotel.DataModel.QuestionMaster _questionMaster_new = new DataAccess.Hotel.DataModel.QuestionMaster()
{
QuestionType = Question.TypeCode,
QuestionText = Question.QuestionText,
OrderNb = Question.OrderNo,
Isactive = "Y"
};
_hotelEntities.QuestionMasters.Add(_questionMaster_new);
if (IsQuestionHasList() && IsNewList())
{
//adding new list name
ListName _listName_new = new ListName
{
IsActive = "Y",
QuestionMaster = _questionMaster_new
};
_hotelEntities.ListNames.Add(_listName_new);
}
}
_hotelEntities.SaveChanges();
Теперь, скажем, есть 10 вопросов, в списке которых связан только вопрос№ 3 и 8. У меня должен быть QuestionMasterId в ListName как 3 и 8, но он показывает мне 1 и 2, что заставляет меня думать, что EF не сохраняет ссылки.Это правда?если да, то что может быть альтернативой для получения соответствующих идентификаторов?
Мои классы моделей:
public partial class ListName
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public ListName()
{
this.ListItems = new HashSet<ListItem>();
this.QuestionLists = new HashSet<QuestionList>();
}
public int Id { get; set; }
public int QuestionId { get; set; }
public string Code { get; set; }
public string ListNameText { get; set; }
public string IsActive { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<ListItem> ListItems { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<QuestionList> QuestionLists { get; set; }
}
public partial class QuestionMaster
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public QuestionMaster()
{
this.QuestionLists = new HashSet<QuestionList>();
}
public int Id { get; set; }
public Nullable<int> QuestionId { get; set; }
public string QuestionCode { get; set; }
public string QuestionType { get; set; }
public string QuestionText { get; set; }
public Nullable<int> OrderNb { get; set; }
public string Isactive { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<QuestionList> QuestionLists { get; set; }
}