2013-02-12 19 views
1

嗨,我嘗試從我的數據庫中得到一些日期,但它不會工作,我真的不知道爲什麼。錯誤:「數據庫」中的實體參與「FK_MSCourse_Language」關係。 0相關'語言'被發現。 1'語言'預計

我獲得以下錯誤:

Error: Entities in 'DataBase' participate in the 'FK_MSCourse_Language' relationship. 0 related 'Language' were found. 1 'Language' is expected. 

我的代碼:

var language = db.Language.Where(x => x.Designation == publicLanguage); 

if (language != null) 
{ 
    newCourse.Language = language.SingleOrDefault(); 
} 
else 
{ 
    newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "English"); 
} 

如果我做這種方式它的工作原理,但我想動態有它從數據庫語言。

switch (publicLanguage) 
{ 
    case "French": 
    newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "French"); 
    break; 
    default: 
    newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "English"); 
    break; 
} 

任何人都知道我在做什麼錯?

感謝, 馬庫斯

+0

語言是一個空字段嗎? – IronMan84 2013-02-12 16:37:23

回答

0

LINQ的Where操作返回一個IEnumerable,它永遠不能爲null,使您的if塊沒用。無論如何,它總是會執行newCourse.Language = language.SingleOrDefault();

我也在想,試圖使用==什麼是最有可能的字符串變量也可能會導致你一些問題。我會建議使用.Equals()方法,它會真正調查字符串是否相等。此外,由於你只是試圖抓住第一個,爲什麼不只是這樣做:

var language = db.Language.FirstOrDefault(x => x.Designation.Equals(publicLanguage)); 

這將抓住這是語言相匹配的第一個,或返回null。在這種情況下,如果language變量實際上爲空,那麼只需要有一個if語句,然後該語句將分配英語作爲語言。

+0

感謝您的建議,但仍然收到相同的錯誤。 – 2013-02-12 16:48:07

+0

我的壞處。現在工作。謝謝 – 2013-02-12 16:50:37