SQL Server에 갖고 싶은 테이블의 모델 인 간단한 C# 클래스가 있습니다. 내가 마이그레이션을 만들 때Entity Framework에서 일대 다 관계가 필요한 동안 Int 필드를 만듭니다.
public class Device
{
public int Id { get; set; }
public DeviceType DeviceType { get; set; }
public IList<Device> ConnectedDevices { get; set; }
}
가 여기 엔티티 프레임 워크는이 테이블에 대해 생성하는 작업은 다음과 같습니다 : 여기에 클래스의
CreateTable(
"dbo.Devices",
c => new
{
Id = c.Int(nullable: false, identity: true),
Device_Id = c.Int(),
DeviceType_Id = c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Devices", t => t.Device_Id)
.ForeignKey("dbo.DeviceTypes", t => t.DeviceType_Id)
.Index(t => t.Device_Id)
.Index(t => t.DeviceType_Id);
내가 이드 및 Device_Type_Id를 만들어 볼 -이 두 정상입니다. 그러나 Device_Id를 생성하고 싶은 이유는 Int입니까? 나는 그것을 필요로하지 않는다. 나는 one-to-many 관계를 원한다. (하나의 장치는 많은 장치의 마스터가 될 수있다.) 그렇다면 ConnectedDevices 속성이 제대로 반영되지 않는 이유는 무엇입니까?
// 편집 : 내가 더 생각할 때 실제로는 다 대다 관계를 가져야합니다. 모든 장치에는 제어 할 수있는 많은 장치가있을 수 있습니다. 그래서 EF는 나를 만족시키기위한 추가 테이블을 생성해야합니다. 왜 그렇게하지 않는지 나는 이해할 수 없다.
이 링크를 보았지만 새 버전의 EF로 더 잘 처리 할 수 있다고 생각했습니다. 다 대다를 많이 만들고 싶습니다. EF가이를 일대 다 (one-to-many)로 변환하는 이유는 무엇입니까? – Loreno
다 대다를 원한다고 생각하는 이유는 무엇이라고 생각하십니까? 어떤 규칙을 기반으로합니까? 자체 참조 one-to-many는 또한 트리와 같은 데이터를 저장하는 데 자주 사용됩니다. –
@IvanStoev 예를 들려 줄 수 있습니까? 나는 뭔가를 배우는 데 관심이 있습니다. Device 클래스 안에 IList 속성이 있으면 다른 장치에 바인딩 할 장치를 많이 갖고 싶다는 것이 확실합니다. 디바이스는 디바이스 타입이므로 다 대다가됩니다. – Loreno