많은 다른 클래스가 가질 수있는 기본 Address
클래스를 만들려고합니다. 회사는 청구서 수신 주소와 배송지 주소를 가질 수 있으며, 각 직원에게는 집 주소가 있습니다. 나는 EF4에서이 모델을 먼저하고 있는데, 나는 1-way-navigation을 할 수 있다고 생각했지만, 이것은 효과가 없다. 여기 제가 가지고있는 것이 있습니다 :Entity Framework 4 단방향 탐색/관계. 내가 도대체 뭘 잘못하고있는 겁니까?
edmx 모델. 1-1 릴레이션을 만든 다음 Address
에 탐색 속성을 삭제하여 Companies
및 Employees
이 Address
을 참조하지만 주소가 해당 소유자를 참조하지 않도록 유의하십시오. > 주소 및 직원 - -
생성 된 SQL은 다음 3 개 테이블을 만드는 회사를 시행한다는 점에서 올바른 찾습니다> 주소 관계를, 그리고 하지이 주소를 적용하지 -> 회사 또는 주소 -> 직원 관계. EF 노력처럼
System.Data.UpdateException: Entities in 'Model1Container.Addresses' participate in the 'EmployeeAddress' relationship. 0 related 'Employee' were found. 1 'Employee' is expected.
그래서 같습니다
-- Creating table 'Addresses'
CREATE TABLE [Addresses] (
[Id] int IDENTITY(1,1) NOT NULL,
[Street] nvarchar(4000) NOT NULL,
[City] nvarchar(4000) NOT NULL,
[State] nvarchar(4000) NOT NULL,
[Zip] nvarchar(4000) NOT NULL
);
GO
-- Creating table 'Companies'
CREATE TABLE [Companies] (
[Id] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(4000) NOT NULL,
[Address_Id] int NOT NULL
);
GO
-- Creating table 'Employees'
CREATE TABLE [Employees] (
[Id] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(4000) NOT NULL,
[Address_Id] int NOT NULL
);
GO
-- Creating foreign key on [Address_Id] in table 'Companies'
ALTER TABLE [Companies]
ADD CONSTRAINT [FK_CompanyAddress]
FOREIGN KEY ([Address_Id])
REFERENCES [Addresses]
([Id])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating foreign key on [Address_Id] in table 'Employees'
ALTER TABLE [Employees]
ADD CONSTRAINT [FK_EmployeeAddress]
FOREIGN KEY ([Address_Id])
REFERENCES [Addresses]
([Id])
ON DELETE NO ACTION ON UPDATE NO ACTION;
지금 나는 Company
과 Address
...
[TestMethod]
public void TestMethod1()
{
var context = new Model1Container();
context.AddToCompanies(new Company
{
Name = "TestCompany",
Address = new Address
{
Street = "TestAddress"
}
});
context.SaveChanges();
}
이 테스트는 오류가있는 SaveChanges()
실패를 삽입 할 회사 주소에서 비 탐색 가능한 주소 - 종업원 관계를 시행합니다 ...
어떻게하면됩니까? 이런 종류의 관계가 상당히 일상적인 일처럼 보입니다 ... 어떤 도움을 주셔서 감사합니다!
답장을 보내 주셔서 감사합니다. EF에서 이것을 모델링하는 "올바른"방법은 무엇입니까? C# 클래스에서는 기본적으로 다음을 원합니다 :'class Address {}'와'class Employee {public Address EmployeeAddress; }'및'class Company {public Address CompanyAddress; }'EF에서 그 관계를 모델링 할 수있는 방법이 정말로 없습니까? – CodingWithSpike
재사용 할 수없는 경우 별도의 테이블에 주소를 저장하는 시점은 무엇입니까? 복잡한 유형이 필요한 것처럼 보입니다. 엔티티의 경우 1 : 0..1로 변경 관계를 시작해야합니다. –
복잡한 유형이 실제로 내가 실제로 원하는 것 같아요. 그것은 C#에서 'Address' 유형의 데이터를 적절하게 구분합니다. DB에서 모든 테이블을 동일한 테이블에 저장하지만, 중요하지는 않습니다. DB 레이아웃에 객체 지향 로직을 적용하는 것만 같았습니다. 도와 주셔서 감사합니다! – CodingWithSpike