Tag: ef code first

如何使用DbContext和SetInitializer修复datetime2超出范围的转换错误?

我正在使用entity framework4.1中引入的DbContext和Code First API。 数据模型使用基本数据types,如string和DateTime 。 我在某些情况下使用的唯一数据注释是[Required] ,但这不在任何DateTime属性中。 例: public virtual DateTime Start { get; set; } DbContext子类也很简单,如下所示: public class EventsContext : DbContext { public DbSet<Event> Events { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Event>().ToTable("Events"); } } 初始化程序将模型中的date设置为今年或明年的明智值。 但是,当我运行初始化,我得到这个错误在context.SaveChanges() : 将datetime2数据types转换为date时间数据types会导致超出范围的值。 该语句已终止。 我不明白为什么会发生这种情况,因为一切都很简单。 我也不知道如何解决这个问题,因为没有edmx文件来编辑。 有任何想法吗?

StringLength与MaxLength属性entity frameworkEF Code First的ASP.NET MVC

[MaxLength]和[StringLength]属性的行为有什么不同? 据我所知(除了[MaxLength]可以validation数组的最大长度)这些是相同的,有点多余?

从DbValidationException中获取确切的错误types

我有这种情况,我正在初始化我的模型在DatabaseInitializer()EF 4.1,并得到这个恼人的错误"Validation failed for one or more entities. See 'EntityValidationErrors' property for more details." 所以,我去了这个EntityValidationErrors,并有一个字段{System.Data.Entity.Validation.DbEntityValidationResult}它根本没有给我任何信息,关于什么领域,它无法初始化。 有没有办法获得有关此错误的更多信息? 清除事情: 我知道如何解决string长度问题。 我在问什么是如何得到打破模型的确切字段名称。

在“entity framework4.1代码优先”中忽略类属性

我的理解是[NotMapped]属性不可用,直到目前在CTP中的EF 5,所以我们不能在生产中使用它。 我如何标记EF 4.1中的属性被忽略? 更新:我注意到别的奇怪。 我得到了[NotMapped]属性,但由于某种原因,EF 4.1仍然在数据库中创build一个名为Disposed的列,即使public bool Disposed { get; private set; } public bool Disposed { get; private set; } public bool Disposed { get; private set; }用[NotMapped]标记。 当然,这个类实现了IDisposeable ,但我不明白这应该如何。 有什么想法吗?

EF 4.1代码优先的复合钥匙

我想弄清楚如何使用EF代码First 4.1 RC的复合键。 目前,我正在使用[Key]数据注释,但我无法指定多个键。 如何指定一个复合键? 这是我的例子: public class ActivityType { [Key] public int ActivityID { get; set; } [Required(ErrorMessage = "A ActivityName is required")] [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")] public string ActivityName { get; set; } } 我需要“活动名称”也是一个关键。 当然,我可以对此进行编码,但那不是很好的数据库devise。

debugging代码 – 第一个entity framework迁移代码

我在我的网站中首先使用实体​​框架代码,我只是想知道是否有任何方法来debugging迁移代码。 你知道,像设置断点和这样的东西。 我使用软件包pipe理器控制台来使用update-database来更新数据库。 谢谢

将数据库视图映射到EF 5.0 Code First w / Migrations

我试图在EF 5.0 Code First w / Migrations中将SQL视图映射到实体上,以便在页面上显示一些基本信息,而无需查询多个表中的信息(加载时间大约需要20秒,而不是很好。 )。 我听说有可能这样做,但我一直无法find或find一种正确的方式。 编辑:为了更深入的看看我对这个问题的解决scheme,请阅读这个主题的博客文章 。 这是我的观点: CREATE VIEW [dbo].[ClientStatistics] AS SELECT ROW_NUMBER() OVER (Order By c.ID) as Row, c.LegacyID, c.ID, c.ClientName, slc.AccountManager, slc.Network, (SELECT MAX(CreatedDate) AS Expr1 FROM dbo.DataPeriods WHERE (ClientID = c.ID)) AS LastDataReceived, (SELECT MAX(ApprovedDate) AS Expr1 FROM dbo.DataPeriods AS DataPeriods_2 WHERE (ClientID = c.ID)) AS LastApproved, […]

EF 4.1代码优先:如何使用包含和/或select方法命令导航属性?

这是EF4.1代码优先:如何加载相关数据(父 – 子 – 孙)? 在@Slauma的指导下,我可以检索数据。 我的第一个代码是这样的: var model = DbContext.SitePages .Where(p => p.ParentId == null && p.Level == 1) .OrderBy(p => p.Order) // ordering parent .ToList(); foreach (var child in model) { // loading children DbContext.Entry(child) .Collection(t => t.Children) .Query() .OrderBy(t => t.Order) // ordering children .Load(); foreach (var grand in child.Children) { // […]

EF5代码首先枚举和查找表

我想定义一个枚举EF5使用,以及相应的查找表。 我知道EF5现在支持枚举,但是现成的,它似乎只支持在对象级别,并且不会默认为这些查找值添加一个表。 例如,我有一个用户实体: public class User { int Id { get; set; } string Name { get; set; } UserType UserType { get; set; } } 和一个UserType枚举: public enum UserType { Member = 1, Moderator = 2, Administrator = 3 } 我想为数据库生成创build一个表,如下所示: create table UserType ( Id int, Name nvarchar(max) ) 这可能吗?

重写SaveChanges并设置ModifiedDate,但是如何设置ModifiedBy?

我有一个ASP.NET MVC3 Web应用程序与UI,商业(实体)和数据(DbContext)层。 我正在使用entity framework4.1代码优先。 现在,我重写了Data层中的DbContext.SaveChanges() ,这样我就可以为ModifiedDate设置对实现我的IAuditable接口的任何实体对象所做的所有更改。 我有一个静态的DateProvider类和方法(GetCurrentDate),返回DateTime.Now (除非我正在运行一个testing,在这种情况下,它返回任何我告诉它)。 我想自动将ModifiedBy属性设置为当前用户。 什么是最好的方式去做这个? 在框架中是否有内容可以让我访问这些信息,或者是否需要设置类似于DateProvider类的东西? 这是一个Active Directory环境,我们在IIS中使用WindowsAuthentication 。 这是我的SaveChanges代码: public override int SaveChanges() { var changeSet = ChangeTracker.Entries<IAuditable>(); if (changeSet != null) { foreach (var entry in changeSet.Where(c => c.State != EntityState.Unchanged)) { entry.Entity.ModifiedDate = DateProvider.GetCurrentDate(); } } return base.SaveChanges(); }