MVC 3无法将int类型转换为Model

时间:2012-09-08 00:08:02

标签: c# entity-framework

错误:无法隐式转换类型INT?建模 我的数据库配置文件和文章中有2个表...当有人在我的页面上创建文章而没有他们收到个人资料ID的个人资料时,他们共享一个共同字段个人资料ID strong>为NULL,但是当他们创建那个配置文件时,我试图将他们的profileID从NULL更新为他们从注册配置文件获得的当前ID。我收到一个无法隐式转换类型INT?建模我一直在尝试新事物,但它一直给我这个错误

var oldID = (from x in db.Articles
             where a == x.RegistrationID
             select x.ProfileID).FirstOrDefault();

Article article;

var newID = (from x in db.profiles
             where a == x.registrationID
             select x.profileID).FirstOrDefault();

oldID = newID;
article = oldID;
db.Entry(article).State = EntityState.Modified;

article = oldID 行发生错误。

2 个答案:

答案 0 :(得分:0)

似乎Article类(我在猜测)有一个名为ProfileID的属性是int类型。将类型为article的变量Article分配给名为oldId的变量时,编译器将导致类型不匹配。

请注意,C#是一种强类型的OO编程语言。您必须遵循面向对象的编程规则。

如果您需要更多建议,请参阅Jeremy和David的评论并更新您的问题。

答案 1 :(得分:0)

执行第一个LINQ表达式后,变量oldID将获得ProfileID实例的Article属性的值。我猜ProfileID属性是numeric类型。 article是Article类的实例。通过编写article=oldId;,您试图在不同类型上设置数字类型。那不行!

您应该获取旧的Article对象并将ProfileID属性值设置为新值,然后保存。

var oldArticle = (from x in db.Articles
             where a == x.RegistrationID
             select x).FirstOrDefault();

var newID = (from x in db.profiles
             where a == x.registrationID
             select x.profileID).FirstOrDefault();

oldArticle.ProfileID=newID;

db.Entry(article).State = EntityState.Modified;