0

错误:不能隐式转换类型 INT?为了建模 ,我的数据库配置文件和文章中有 2 个表......当有人在我的页面上创建文章而没有配置文件时,它们都共享一个共同的字段配置文件 ID ,他们收到的配置文件 id为 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行。

4

2 回答 2

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;
于 2012-09-08T02:16:15.010 回答
0

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

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

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

于 2012-09-08T00:52:29.677 回答