Tag: ef code first

entity framework快照历史记录

我试图弄清楚如何使用Code First Entity Framework并保留某些表的快照历史记录。 这意味着对于我想要跟踪的每个表,我希望有一个后缀为_History的重复表。 每次我对跟踪的表行进行更改时,数据库中的数据都会在将新数据保存到原始表之前复制到历史表中,并且版本列会递增。 所以想象我有一个名为Record的表。 我有一排(ID:1,名称:一,版本:1)。 当我将其更改为(ID1:Name:Changed,Version:2)时,Record_History表获取一行(ID:1,Name:One,Version:1)。 我已经看到了很好的示例,并且知道有些库可以使用Entity Framework保留更改的审核日志,但我需要在SQL报告的每个修订版本中提供实体的完整快照。 在我的C#中,我有一个基类,我的所有“Tracked”表等效实体类都inheritance自: public abstract class TrackedEntity { [Column(TypeName = “varchar”)] [MaxLength(48)] [Required] public string ModifiedBy { get; set; } [Required] public DateTime Modified { get; set; } public int Version { get; set; } } 我的一个实体类的示例是: public sealed class Record : TrackedEntity { [Key] public […]

如何在EF Code First中创建/更新LastModified字段

我想在记录保存到磁盘时添加一个存储当前DateTime的列。 实现这一目标的最佳方法是什么? 我知道这不是一个非常复杂的问题,但我想知道是否有任何最佳实践或EF的任何function可以简化任务。 例如: 有没有办法在表Class中包含该字段的逻辑,以便它在保存到磁盘时自动更新? 修改或保存对象时是否有捕获事件?

entity framework代码第一个关联/ FK问题和假设/默认值

我对entity framework能够了解实体之间关系的方式感到非常困惑。 我对此有几个问题。 在一个简单的测试应用程序中,我有一个人员表,一个笔记表和一个图片资产表。 有很多图片,每个都是由一个人拥有(一个人可以拥有多个)。 有许多笔记,每个笔记都由一个人拥有(一个人可以拥有多个)。 最后一个人有一个标志,这是一张图片。 。 public class Person { public int ID { get; set; } public string name { get; set; } public Picture logo { get; set; } } public class Note { public int ID { get; set; } public string Text { get; set; } public Person Owner […]

Code-First更改没有连接字符串的数据源

我似乎在创建MVC4应用程序时遇到问题,我采用了代码优先的方法来创建我的模型,但似乎没有在web.config文件中创建连接字符串。 构建的数据库似乎是基于(localhost)\ SQLEXPRESS实例构建的,但我想将其更改为外部数据源。 没有要更新的连接字符串我不知道如何做到这一点。 请有人指出我正确的方向吗? 编辑:我发现下面的图表突出了答案说得很好 EF DB初始化流程图http://sofzh.miximages.com/c%23/database-init-fg1.png

使用默认约定的可选从属端的一对一关系

我希望使用Entity Framework代码优先模型中的默认约定来映射具有可选依赖实体( Car )的主体实体( Person )。 此答案中描述了一种解决方案,它使用modelBuilder上的流畅API映射到密钥。 是否可以仅使用默认的EF约定来执行此操作? 以下代码将抛出一个Unable来确定Person和Car类型之间关联的主要结尾。 无效的操作exception。 public DatabaseContext : DbContext public DbSet Persons { get; set; } public DbSet Cars { get; set; } // No OnModelCreating – possible? public class Person public Int32 PersonId { get; set; } public Int32? CarId { get; set; } // Optional. public virtual Car […]

EF Code First – Linq to Entities Union EqualityComparer

我有两个IEnumerable集合,我想结合。 一个选择与特定类别相关联的新闻对象。 当用户按类别过滤时,我还希望显示已标记有其他类别的新闻文章。 所以我有另一个查询返回标记有特定子类别的新闻对象。 现在我想结合两个集合,删除重复项(作为与主类别相关联的新闻文章,也可以用第二类标记)。 var catNews = model.Category.News.SelectMany(n => n.News); //get news article associated to the category var tagNews = _nr.GetNews(model.Category.relatedCategoryName); //this selects news by tags – which I want as the related category name model.News = catNews.Union(tagNews).OrderByDescending(p => p.Date); //union the two collections 但是,model.News现在包含两篇相同的新闻文章,我不确定为什么联盟应该使用默认的相等比较器? 我在这里做错了吗? 我使用的是EF Code First,我的主键是新闻ID。 我解决这个问题的方法是将一个catNews id列表传递给GetNews函数并排除它们 if (excludeIds != […]

entity framework6自引用实体上的代码优先级联删除

我有一个实体: public class Section : SortableEntity { private ICollection _sections; public ICollection Sections { get { return _sections ?? (_sections = new HashSet()); } set { _sections = value; } } public string Title { get; set; } public string Description { get; set; } public Section ParentSection { get; set; } public int? ParentSectionId […]

如何创建嵌套的GridView来编辑EF Code First关系?

我有一个经典的父子关系,我想通过使用asp:GridView控件来CRUD。 对于CRUD,父级很容易,但挑战是在asp:GridView嵌套asp:GridView ,它能够处理子关系。 为了使问题更容易,我构建了一个例子。 请考虑以下EF代码: public class Context : DbContext { public DbSet Animals { get; set; } public DbSet Tags { get; set; } } public class Animal { public int AnimalID { get; set; } public string Name { get; set; } public virtual IEnumerable Tags { get; set; } } public class […]

为最小int值设置约束

我正在使用Repository模式。 我有一个名为Product的实体,我想设置价格的最小值以避免零价格。 是否可以在EntitytypeConfiguration类中创建它? 我的产品配置类 public class ProductConfiguration : EntityTypeConfiguration { public PlanProductConfiguration(string schema = “dbo”) { ToTable(schema + “.Product”); HasKey(x => new { x.IdProduct }); Property(x => x.Price).HasColumnName(“flt_price”) .IsRequired() .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); } }

entity framework代码第一个多列外键

首先使用代码我设计了3个类: class User { public Int32 ID {get;set;} public virtual ICollection {get;set;} public Int32 MainCityID {get;set;} public UserCityDetail MainCityDetail {get;set;} } class City{ public Int32 ID {get;set;} … } class UserCityDetail{ [Key, Column(Order = 0)] public Int32 UserID {get;set;} [Key, Column(Order = 1)] public Int32 CityID{get;set;} … } 所以基本上我有一个用户在几个城市有不同的细节。 UserCityDetail的用户ID是PK和FK。 我也希望直接参考主要的城市细节,所以我在用户上放置了一个城市ID FK。 如何将用户ID和MainCityID配置为像MainCityDetail的FK一样?