을 정의하는 방법엔티티 프레임 워크 코드 첫 번째 - 내가 ASP.NET 코어와 엔티티 프레임 워크를 사용하고 사용자 정의 탐색 속성
나는 기존의 데이터베이스 스키마를 가지고 있고, 나는 외국를 사용하여 연결된 테이블을 추가 할 그러나 외부 키 인덱스 열은 표준 EF 규칙을 따르는 것이 아닙니다. EF에서 이것을 어떻게 표현할 수 있습니까? 가능하다면 Data Annotation 속성을 사용하는 것을 선호하지만 그렇지 않은 경우 ModelBuilder 유창 API를 사용하는 것이 좋습니다.
본질적이 : 상기 모델에서
[Table("widgets")]
class Widget {
[Key, Column("id")]
int Id { get; set; }
[Column("referencenumber")]
int ReferenceNumber { get; set; }
public WidgetReferenceData ReferenceData // ???? How do I express this?
}
[Table("widgetreferences")]
class WidgetReference {
[Key, Column("referencenumber")]
int ReferenceNumber { get; set; }
[Column("value")]
string Value { get;set; }
}
하기, Widget
가 WidgetReference
테이블 0 또는 1 연관된 엔트리를 가질 수의 widgets.referencenumber
데이터베이스 컬럼을 사용하여 연결.
위젯 모델에 연결된 WidgetReference (또는 존재하지 않는 경우 null)를로드하고로드하려면이 위젯 모델에 속성을 추가하고 싶습니다. 기본적으로 나는 다음과 같이 사용할 수 있도록하려면 :
var referenceValue = FindWidget().ReferenceData?.Value;
은 기존의 "ID"열을한다면, EF가 알아서 것이지만, 사용자 정의 데이터베이스 컬럼과 재산의 이름을 가지고, 어떻게 할 이 관계를 표현하시오.
결과에 영향을 줄지는 모르겠지만 widgetreferences.referencenumber
은 외래 키가 아니라 인덱스가있는 열입니다. 우리 비즈니스 로직은 위젯이 삭제되면 여전히 참조 데이터를 유지하려고합니다.
Google 검색을 통해 이에 대한 답변을 찾으려고 시도했지만 실패한 것처럼 보였습니다. :-(
제목 말한다는 코드입니다 먼저, 시체가 먼저 DB라고 말하니? 비계를 세우면 비계가 관계를 어떻게 나타낼까요? (아니면 FK가 없어서 귀찮지 않습니까?) 위젯과 참조의 x : y 관계? –
먼저 코드를 작성하십시오. 나는 edmx 매핑 파일을 사용하지 않고있다. 관계는 위젯에 0 또는 하나의 참조 ("referencescenumber"열에 대한 조인)가 있지만 참조가 삭제되는 위젯에서 살아남을 수 있다는 점이 다릅니다. –
Like https://stackoverflow.com/questions/35501552/code-first-of -ef-how-to-define-navigation-property-relationship-without-setting? 이러한 것들에 대한 일반적인 합의는 EF가 FK를 생성 한 다음 DB에서 삭제하도록하는 것으로 보입니다. 만약 그것이 올바른 방법으로 열쇠를 맞췄다면, "누락 된 캐스케이드 삭제"종류가되도록 변경할 수 있습니다. 그래서 참조가 widgetid를 잃어 버릴 수 있습니다. (그러나 반대 방향과 관련이있는 것처럼 보입니다. 위젯이 widgetid를 갖는 참조가 아닌 referenceid를 가짐) 위젯이 사라지는 경우 –