标签: entity-framework-4.1

一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性

我在使用代码优先方法播种数据库时遇到此错误.

一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性.

说实话,我不知道如何检查验证错误的内容.Visual Studio向我显示它是一个包含8个对象的数组,因此有8个验证错误.

这与我之前的模型有关,但我做了一些修改,我在下面解释:

  • 我有一个名为Status的枚举,我将其更改为名为Status的类
  • 我将类ApplicantsPositionHistory更改为在同一个表中有2个外键

请原谅我的长代码,但我必须将其全部粘贴.在以下代码的最后一行中抛出异常.

namespace Data.Model
{  
    public class Position
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]   
        public int PositionID { get; set; }

        [Required(ErrorMessage = "Position name is required.")]
        [StringLength(20, MinimumLength = 3, ErrorMessage = "Name should not be longer than 20 characters.")]
        [Display(Name = "Position name")]              
        public string name { get; set; }

        [Required(ErrorMessage = "Number of years is required")] 
        [Display(Name = "Number of years")]        
        public int yearsExperienceRequired { get; set; }

        public virtual ICollection<ApplicantPosition> applicantPosition { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-4 entity-framework-4.1

767
推荐指数
19
解决办法
68万
查看次数

代码优先与模型/数据库优先

使用实体框架4.1代码优先于模型/数据库优先使用EDMX图表有什么优缺点?

我正在尝试完全理解使用EF 4.1构建数据访问层的所有方法.我正在使用Repository模式和IoC.

我知道我可以使用代码优先方法:手动定义我的实体和上下文并用于ModelBuilder微调模式.

我还可以创建一个EDMX图表并选择一个代码生成步骤,该步骤使用T4模板生成相同的POCO类.

在这两种情况下,我最终POCO都得到了ORM不可知的对象和源自的上下文DbContext.

数据库优先似乎最吸引人,因为我可以在企业管理器中设计数据库,快速同步模型并使用设计器对其进行微调.

那么这两种方法有什么区别?是仅仅关于VS2010与企业管理器的偏好?

entity-framework poco ef-code-first entity-framework-4.1 ef-database-first

607
推荐指数
9
解决办法
29万
查看次数

忽略Entity Framework 4.1 Code First中的类属性

我的理解是,在[NotMapped]EF 5当前处于CTP中之前,该属性不可用,因此我们无法在生产中使用它.

如何将EF 4.1中的属性标记为忽略?

更新:我注意到其他一些奇怪的事情.我得到了该[NotMapped]属性,但由于某种原因,即使public bool Disposed { get; private set; }标记为,EF 4.1仍会在数据库中创建一个名为Disposed的列[NotMapped].该IDisposeable课程当然是实现的,但我不知道这应该如何重要.有什么想法吗?

.net c# entity-framework ef-code-first entity-framework-4.1

291
推荐指数
2
解决办法
19万
查看次数

实体框架代码优先 - 来自同一个表的两个外键

我刚开始使用EF代码,所以我在这个主题中完全是初学者.

我想在团队和比赛之间建立关系:1场比赛= 2队(主场,客场)和结果.我认为创建这样的模型很容易,所以我开始编码:

public class Team
{
    [Key]
    public int TeamId { get; set;} 
    public string Name { get; set; }

    public virtual ICollection<Match> Matches { get; set; }
}


public class Match
{
    [Key]
    public int MatchId { get; set; }

    [ForeignKey("HomeTeam"), Column(Order = 0)]
    public int HomeTeamId { get; set; }
    [ForeignKey("GuestTeam"), Column(Order = 1)]
    public int GuestTeamId { get; set; }

    public float HomePoints { get; set; }
    public float GuestPoints { get; set; }
    public DateTime …
Run Code Online (Sandbox Code Playgroud)

c# orm entity-framework code-first entity-framework-4.1

252
推荐指数
6
解决办法
14万
查看次数

虚拟关键字在Entity Framework 4.1 POCO Code First中有什么影响?

virtual在EF Code First中的属性上使用时,关键字是否有效?有人能描述不同情况下的所有后果吗?

例如,我知道它可以控制延迟加载 - 如果你在ICollection/one-to-many关系属性上使用virtual关键字,默认情况下它将是延迟加载的,而如果你将虚拟关键字保留为out,它将会急切的.

virtual关键字在EF中与POCO实体有什么其他影响?我应该默认使用virtual我的所有属性,还是默认不使用它?

entity-framework-4 ef-code-first entity-framework-4.1

223
推荐指数
2
解决办法
9万
查看次数

如何将参数传递给DbContext.Database.ExecuteSqlCommand方法?

让我们假设我有一个在Entity Framework中直接执行sql命令的有效需求.我无法弄清楚如何在我的sql语句中使用参数.以下示例(不是我的实例)不起作用.

var firstName = "John";
var id = 12;
var sql = @"Update [User] SET FirstName = @FirstName WHERE Id = @Id";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);
Run Code Online (Sandbox Code Playgroud)

ExecuteSqlCommand方法不允许您传入ADO.Net中的命名参数,并且此方法文档未提供有关如何执行参数化查询的任何示例.

如何正确指定参数?

entity-framework entity-framework-4.1

210
推荐指数
6
解决办法
17万
查看次数

从DbValidationException获取确切的错误类型

我有这样的情况,我在DatabaseInitializer()中为EF 4.1初始化我的模型,并得到这个恼人的错误"Validation failed for one or more entities. See 'EntityValidationErrors' property for more details."所以,我去了这个EntityValidationErrors,有一个字段{System.Data.Entity.Validation.DbEntityValidationResult},根本没有给我任何关于它无法初始化的字段的信息.有没有办法获得有关此错误的更多信息?

清除问题:

我知道如何解决字符串长度问题.我问的是如何获得打破模型的确切字段名称.

.net entity-framework ef-code-first entity-framework-4.1

183
推荐指数
3
解决办法
5万
查看次数

由于一个或多个外键属性不可为空,因此无法更改关系

当我在一个实体上使用GetById()然后将子实体的集合设置为来自MVC视图的新列表时,我收到此错误.

操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.

我不太明白这一行:

由于一个或多个外键属性不可为空,因此无法更改关系.

为什么要更改2个实体之间的关系?它应该在整个应用程序的整个生命周期内保持不变.

发生异常的代码很简单,即将集合中已修改的子类分配给现有父类.这有望满足删除子类,添加新类和修改的需要.我原以为Entity Framework会处理这个问题.

代码行可以提炼为:

var thisParent = _repo.GetById(1);
thisParent.ChildItems = modifiedParent.ChildItems();
_repo.Save();
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4.1

179
推荐指数
7
解决办法
15万
查看次数

通用存储库使用EF 4.1有什么意义

随着我深入研究DbContext,DbSet和相关接口,我想知道为什么你需要围绕这些实现实现一个单独的"通用"存储库?

它看起来像DbContext和IDbSet做你需要的一切,并在DbContext中包含"工作单元".

我在这里遗漏了什么,或者似乎人们喜欢无缘无故地添加另一层依赖.

unit-of-work repository-pattern entity-framework-4.1

145
推荐指数
3
解决办法
3万
查看次数

StringLength vs MaxLength将ASP.NET MVC与Entity Framework EF Code First相关联

行为[MaxLength][StringLength]属性有什么区别?

据我所知(除了[MaxLength]可以验证数组的最大长度)这些是相同的,有点多余?

ef-code-first entity-framework-4.1 asp.net-mvc-3

144
推荐指数
6
解决办法
10万
查看次数