EF 4.1 в MVC3 и отложенной загрузке с использованием кода первой модели
С трудностями при проектировании правильных моделей. Пожалуйста, посмотрите и дайте мне знать, что я делаю не так. Как я могу это исправить.
Я использую API членства для создания учетной записи. После того, как учетная запись создана успешно. Я перенаправляю, чтобы создать запись контакта автоматически.
contactId (автоматически сгенерированная база данных), userid (хранит идентификатор пользователя, сгенерированный api членства)
Модели:
public class Contact
{
public int ContactID { set; get; }
public string UserId { set; get; }
public string LastName { set; get; }
public int? CompanyID { set; get; } // not sure if I need this as it will be NULL
public virtual Company CompanyInfo { set; get; }
}
Далее пользователь может щелкнуть ссылку «Создать компанию» или выйти из системы и войти позже, чтобы создать запись о компании.
public class Company
{
public int CompanyID { set; get; }
public int ContactID { set; get; }
public string CompanyName { set; get; }
public virtual Contact Contacts { set; get; }
}
Когда пользователь решает создать запись о компании, я проверяю, существует ли компания, если она существует, я просто показываю контактную информацию и информацию о компании ИЛИ, если не найден, я перенаправляю на создание компании.
public ActionResult chckifCompanyFound()
{
int contactId = 1; //Assuming I retrieved the value
//I think I should get the data from Company table, if company data found then contact data could be retrieved using lazy loading?
Company c= db.Company.Include(c => c.Contacts).Where(x => x.ContactID == contactId).FirstOrDefault();
if(c == null)
//redirect to create company
else
// view data from c company object
}
В настоящее время отображается исключение при попытке создать запись контакта после того, как членство API создает учетную запись. Я создаю запись так:
Contact contact = new Contact();
contact.UserId = userId;
contact.LastName = lastName;
db.Contacts.Add(contact);
db.SaveChanges();
Исключение:
Невозможно определить основной конец ассоциации между типами D.Models.Contact и D.Models.Company. Основной конец этой ассоциации должен быть явно сконфигурирован с использованием API свободного взаимодействия или аннотаций данных.
Большое спасибо!