"지정된 포함 경로가 유효하지 않습니다."라는 오류가 발생합니다. EntityType 'MyCMS.DAL.SiteSettings'가 다음과 같은 탐색 속성을 선언하지 않습니다. 'SiteSettingOptions'이름. "Entity Framework 오류 : 지정된 포함 경로가 가상 엔터티에 유효하지 않습니다.
이 문제에 관해 많은 게시물을 읽었지만 내가 한 모든 연구는 ICollections와 관련이 있으며 클래스 속성이 아닙니다.
여기 내가 현재 어디에 있으며 문제를 해결하는 데 도움을 줄 수 있습니다.
[Table("SiteSettingsBridge")]
[DataContract]
public partial class SiteSettings
{
[Key]
[DataMember]
public int SiteSettingsBridgeID { get; set; }
[DataMember]
public int SiteID { get; set; }
[DataMember]
public int SiteSettingOptionID { get; set; }
[DataMember]
public virtual SiteSettingOptions SiteSettingOption { get; set; }
[DataMember]
[StringLength(500)]
public string Value { get; set; }
public SiteSettings()
{
SiteSettingsBridgeID = 0;
SiteID = 0;
SiteSettingOptionID = 0;
Value = "";
}
}
[DataContract]
public partial class SiteSettingOptions
{
[Key]
[DataMember]
public int SiteSettingOptionID { get; set; }
[DataMember]
public string SettingsGroup { get; set; }
[DataMember]
[StringLength(100)]
public string Name { get; set; }
[DataMember]
[StringLength(500)]
public string DefaultValue { get; set; }
[DataMember]
public SettingType Type { get; set; }
public enum SettingType
{
String = 1,
Bool = 2,
Integer = 3
}
public SiteSettingOptions()
{
SiteSettingOptionID = 0;
SettingsGroup = string.Empty;
Name = string.Empty;
DefaultValue = string.Empty;
Type = SiteSettingOptions.SettingType.String;
}
}
다음 내 DAL 프로젝트 , 나는 내가 위의 오류를 수신하고, 내가 컴파일 할 때이
public static List<Contracts.Sites.SiteSettings> GetBySiteID(int SiteID)
{
using (CMSContext cntx = new CMSContext())
{
///OMITTED FOR BREVITY
return cntx.SiteSettings.Include("SiteSettingOptions").Where(i => i.SiteID == SiteID).ToList();
}
}
같은 컨텍스트 쿼리에 포함 추가하고 실행하려고하고 있습니다.
앞에 몇 가지 질문에 대답하려면 LazyLoading을 사용하지 않고 모델을 만들 때 아무 것도하지 않습니다.
예, 저는 EF의 새로운 브랜드입니다. 이것은 첫 번째 앱입니다.
속성은 'SiteSettingOption' (아니요)이지만'Include ("SiteSettingOptions")'(예 : 마지막 s). 마지막 s를 제거하십시오. 문자열이 아닌 람다를 사용하는 Include 확장을 사용하면 'Include (x => x.SiteSettingOption)'와 같은 결과를 얻을 수 있습니다. –
정말 고마워요. 실수로 인용 부호 안에있는 문자열이 데이터베이스의 테이블을 가리키고 있다고 생각했습니다. 보조 노트로, 나는 DAL 프로젝트의 어디에서나 람다를 사용할 수 없다. 왜 그런지 모르겠습니다. "lambda 표현식을 문자열로 변환 할 수 없습니다"라는 컴파일 오류가 발생합니다. 나는 이것이 어디 에나 게시 된 것을 보았지만 그것은 나를 위해 일하지 않았다. – Solo812
어떤 이유로 든 람다 기반'Include'는 다른 네임 스페이스에있는 다른 클래스의 확장 메소드입니다. 사용할 수 있으려면'using System.Data.Entity'를 추가해야합니다. –