Я знаю, что могу решить это, нажав все на единую сущность, а не накладывая сложные типы (поскольку они всего лишь 1-1 сопоставлений), но мне нравится, как она группируется свойства в сгенерированном ОМ.EF 4.2, CodeFirst - свойство навигации в пределах типа дополнения
У меня есть объект Customer, который содержит полный тип «CrmData». Объект CrmData имеет сложный тип адреса.
public class Customer {
[Required]
public CrmSpecificData CrmData { get; set; }
}
[ComplexType]
public class CrmSpecificData {
[MaxLength(40)]
public string FirstName { get; set; }
[MaxLength(80)]
public string LastName { get; set; }
public Address Address { get; set; }
}
[ComplexType]
public class Address {
[MaxLength(150)]
public string Address1 { get; set; }
[MaxLength(150)]
public string Address2 { get; set; }
[MaxLength(100)]
public string City { get; set; }
[MaxLength(15)]
public string PostalCode { get; set; }
public StateProvince StateOrProvince { get; set; }
public virtual CountryRegion CountryOrRegion { get; set; }
}
Типы CountryRegion StateProvince & являются объекты в моей БД (подобно тому, как работает образец AdventureWorks DB). Проблема в том, что когда EF пытается создать модель, она терпит неудачу с:
Тип «MyCo.Crm.Entities.StateProvince» уже настроен как тип сущности. Он не может быть переконфигурирован как сложный тип.
Я попытался сделать StateProvince сложным, но это не решит проблему. Идеи?
public class StateProvince {
[Key]
public int StateProvinceId { get; set; }
[MaxLength(3)]
public string StateProvinceCode { get; set; }
[MaxLength(50)]
public string Name { get; set; }
}
Без failright после того как я отправил это я, наконец, нашел другую нить, что упомянутый ответ ... в этом случае я думаю, что я буду делать свои государственные и страновые свойства строк и сохраните коды, так как я лучше разбираюсь с поисками, поскольку мне нравится модель, которую у меня есть. Единственным недостатком является часть проверки, но я могу справиться с этим другими способами. –