LINQ to SQL的延迟加载映射类正确
本文关键字:映射 延迟加载 to SQL LINQ | 更新日期: 2023-09-27 17:52:52
这是我第一次这样做,当我想向数据库添加新项目时,它失败了。
如何在article类中设置articleecategoryid的属性来引用article中的文章类别,目前该属性为null,不包含任何值。我的课程如下:
文章类:
[Table(Name="Articles")]
public class Article
{
[HiddenInput(DisplayValue=false)]
[Column(IsPrimaryKey=true, IsDbGenerated=true,AutoSync=AutoSync.OnInsert)]
public int ArticleId { get; set; }
[Column(Name="ArticleCategoryId", AutoSync = AutoSync.Never)]
[Mapping.Association(IsForeignKey = true, Name = "FK_Articles_ArticleCategorys")]
public ArticleCategories ArticleCategory{get;set;}
[Column]
public string Label { get; set; }
[DataType(DataType.MultilineText)]
[Column]
public string Text { get; set; }
[DataType(DataType.DateTime)]
[Column]
public DateTime Created { get; set; }
}
类别的类:
[Table(Name = "ArticleCategorys")]
public class ArticleCategories
{
[HiddenInput(DisplayValue = false)]
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert, Name="ArticleCategoryId")]
public int ArticleCategoryId { get; set; }
[Column]
public string Name { get; set; }
[Column]
public string Description { get; set; }
[DataType(DataType.DateTime)]
[Column] public DateTime Created { get; set; }
}
我错误:[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "ArticleId")] Article article)
{
try
{
ArticleCategories category = articleCategoriesRepository.ArticleCategories.FirstOrDefault(x => x.ArticleCategoryId == article.ArticleCategory.ArticleCategoryId);
article.ArticleCategory = category;
article.Created = DateTime.Now;
articlesRepository.SaveArticle(article);
ViewData["Message"] = NudaJeFuc.WebUI.Properties.Resources.text_ArticleSaved;
return RedirectToAction("Index");
}
catch
{
return view();
}
}
我遇到了Linq2SQL映射的问题,当您向数据库添加新列时,它不会更新,因此会失败。
所以我必须删除。edmx文件,并在任何时候对数据库进行更改时重新添加它。
这在ADO中不会发生。. NET实体框架,所以如果可以的话尝试一下。
找到了解决方案,感谢Steven Sanderson
[Table(Name="Articles")]
public class Article
{
[HiddenInput(DisplayValue=false)]
[Column(IsPrimaryKey=true, IsDbGenerated=true,AutoSync=AutoSync.OnInsert)]
public int ArticleId { get; set; }
[Column]
internal int ArticleCategoryId { get; set; }
internal EntityRef<ArticleCategories> _ArticleCategoryId;
//[Column(AutoSync = AutoSync.OnInsert, Name = "ArticleCategoryId")]
[Association(ThisKey="ArticleCategoryId", Storage="_ArticleCategoryId")]
public ArticleCategories ArticleCategory
{
get
{
return _ArticleCategoryId.Entity;
}
set
{
ArticleCategoryId = value.ArticleCategoryId;
_ArticleCategoryId.Entity = value;
}
}
[Column]
public string Label { get; set; }
[DataType(DataType.MultilineText)]
[Column]
public string Text { get; set; }
[Required(ErrorMessage = "Musíte vybrat kategorii článku.")]
[DataType(DataType.DateTime)]
[Column]
public DateTime Created { get; set; }
}