Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#实体框架——添加新记录_C#_Asp.net_Entity Framework - Fatal编程技术网

C#实体框架——添加新记录

C#实体框架——添加新记录,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,添加具有关系Id的记录时,此代码正确吗? 如果我直接输入Id,我会得到以下错误 无法将类型“int”隐式转换为“Project.Models.Database.ArticleDatabase” 此代码是否低于正确的方式 var newArticle = new Articles(); newArticle.Artname = addarticle.Articlename; //NOT WORKING // newArticle.Artdatabase = addarticle.Article

添加具有关系Id的记录时,此代码正确吗? 如果我直接输入Id,我会得到以下错误

无法将类型“int”隐式转换为“Project.Models.Database.ArticleDatabase”

此代码是否低于正确的方式

var newArticle = new Articles();

newArticle.Artname = addarticle.Articlename;

//NOT WORKING
// newArticle.Artdatabase = addarticle.ArticlegroupId

//WORKING, SEEMS WRONG
newArticle.Artdatabase = _context.ArticleDatabase.SingleOrDefault(c => c.Id == addarticle.ArticlegroupId);


newArticle.Articleaadddate = DateTime.Now;
newArticle.Articlelastedit = DateTime.Now;
newArticle.Artstatus = 3;

_context.Articles.Add(newArticle);
_context.SaveChanges();
//不起作用

//newArticle.Artdatabase=addarticle.ArticlegroupId

这是因为您试图将
ArticlegroupId
(似乎是
int
)设置为类型为
ArticleDatabase
的属性

我假设您的模型如下所示:

public class Articles
{
    public string Artname { get; set; }

    [ForeignKey("ArtdatabaseId")]
    public virtual ArticleDataBase Artdatabase { get; set; }

    // For alternative 2 you'll need this.
    public int ArtdatabaseId { get; set; }
}
备选方案1。使用导航属性。使用导航属性时,需要附加它

var newArticle = new Articles();

newArticle.Artname = addarticle.Articlename;

// Create the entity and attach it.
var artDataBase = new ArticleDataBase
{
    Id = addarticle.ArticlegroupId
};
_context.ArticleDatabase.Attach(artDataBase);

newArticle.Artdatabase = artDataBase;
newArticle.Articleaadddate = DateTime.Now;
newArticle.Articlelastedit = DateTime.Now;
newArticle.Artstatus = 3;

_context.Articles.Add(newArticle);
_context.SaveChanges();
备选方案2。使用外键属性。使用此选项时,需要在模型中明确定义外键

var newArticle = new Articles();

newArticle.Artname = addarticle.Articlename;
// Note that I'm using ArtdatabaseId and not Artdatabase.
newArticle.ArtdatabaseId = addarticle.ArticlegroupId

newArticle.Articleaadddate = DateTime.Now;
newArticle.Articlelastedit = DateTime.Now;
newArticle.Artstatus = 3;

_context.Articles.Add(newArticle);
_context.SaveChanges();
看看如何使用fluent定义外键

modelBuilder.Entity<Post>().HasRequired(p => p.Blog) 
                .WithMany(b => b.Posts) 
                .HasForeignKey(p => p.FKBlogId);
modelBuilder.Entity().HasRequired(p=>p.Blog)
.有许多(b=>b.职位)
.HasForeignKey(p=>p.FKBlogId);
//不起作用

//newArticle.Artdatabase=addarticle.ArticlegroupId

这是因为您试图将
ArticlegroupId
(似乎是
int
)设置为类型为
ArticleDatabase
的属性

我假设您的模型如下所示:

public class Articles
{
    public string Artname { get; set; }

    [ForeignKey("ArtdatabaseId")]
    public virtual ArticleDataBase Artdatabase { get; set; }

    // For alternative 2 you'll need this.
    public int ArtdatabaseId { get; set; }
}
备选方案1。使用导航属性。使用导航属性时,需要附加它

var newArticle = new Articles();

newArticle.Artname = addarticle.Articlename;

// Create the entity and attach it.
var artDataBase = new ArticleDataBase
{
    Id = addarticle.ArticlegroupId
};
_context.ArticleDatabase.Attach(artDataBase);

newArticle.Artdatabase = artDataBase;
newArticle.Articleaadddate = DateTime.Now;
newArticle.Articlelastedit = DateTime.Now;
newArticle.Artstatus = 3;

_context.Articles.Add(newArticle);
_context.SaveChanges();
备选方案2。使用外键属性。使用此选项时,需要在模型中明确定义外键

var newArticle = new Articles();

newArticle.Artname = addarticle.Articlename;
// Note that I'm using ArtdatabaseId and not Artdatabase.
newArticle.ArtdatabaseId = addarticle.ArticlegroupId

newArticle.Articleaadddate = DateTime.Now;
newArticle.Articlelastedit = DateTime.Now;
newArticle.Artstatus = 3;

_context.Articles.Add(newArticle);
_context.SaveChanges();
看看如何使用fluent定义外键

modelBuilder.Entity<Post>().HasRequired(p => p.Blog) 
                .WithMany(b => b.Posts) 
                .HasForeignKey(p => p.FKBlogId);
modelBuilder.Entity().HasRequired(p=>p.Blog)
.有许多(b=>b.职位)
.HasForeignKey(p=>p.FKBlogId);

您没有到ArticleGroup的导航属性吗?因为这样你就可以得到你需要的组作为一个实体,并在newArticle.ArticleGroup属性上设置它,EF将处理其余的部分。Artdatabase属性的类型为“ArticleDatabase”,因此您只能将可分配的内容分配给“ArticleDatabase”-您首先尝试将其设置为Int(不起作用),但找到对对象实际实例的引用确实起作用。。。这有什么不对吗?@Webruster他说,如果代码不起作用,他会得到一个异常,声明类型是Project.Models.Database。ArticleDatabase@ScottPerham-我不认为这是一个异常,而是一个编译时错误。你是对的,老实说,我并不是真的想要异常。。。我的意思是“错误”:)您没有ArticleGroup的导航属性吗?因为这样你就可以得到你需要的组作为一个实体,并在newArticle.ArticleGroup属性上设置它,EF将处理其余的部分。Artdatabase属性的类型为“ArticleDatabase”,因此您只能将可分配的内容分配给“ArticleDatabase”-您首先尝试将其设置为Int(不起作用),但找到对对象实际实例的引用确实起作用。。。这有什么不对吗?@Webruster他说,如果代码不起作用,他会得到一个异常,声明类型是Project.Models.Database。ArticleDatabase@ScottPerham-我不认为这是一个异常,而是一个编译时错误。你是对的,老实说,我并不是真的想要异常。。。我的意思是“错误”: