标签: ef-code-first

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

使用实体框架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万
查看次数

使用关联表中的其他字段首先创建代码,多对多创建代码

我有这种情况:

public class Member
{
    public int MemberID { get; set; }

    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual ICollection<Comment> Comments { get; set; }
}

public class Comment
{
    public int CommentID { get; set; }
    public string Message { get; set; }

    public virtual ICollection<Member> Members { get; set; }
}

public class MemberComment
{
    public int MemberID { get; set; }
    public int CommentID { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# many-to-many entity-framework ef-code-first

282
推荐指数
4
解决办法
12万
查看次数

引入FOREIGN KEY约束可能会导致循环或多个级联路径 - 为什么?

我已经和它搏斗了一段时间,并且无法弄清楚发生了什么.我有一个卡片实体,其中包含Sides(通常为2个) - 卡片和侧面都有一个舞台.我正在使用EF Codefirst迁移,并且迁移失败并出现此错误:

在表'Sides'上引入FOREIGN KEY约束'FK_dbo.Sides_dbo.Cards_CardId'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.

这是我的卡片实体:

public class Card
{
    public Card()
    {
        Sides = new Collection<Side>();
        Stage = Stage.ONE;
    }

    [Key]
    [Required]
    public virtual int CardId { get; set; }

    [Required]
    public virtual Stage Stage { get; set; }

    [Required]
    [ForeignKey("CardId")]
    public virtual ICollection<Side> Sides { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的Side实体:

public class Side
{
    public Side()
    {
        Stage = Stage.ONE;
    }

    [Key]
    [Required]     
    public virtual int …
Run Code Online (Sandbox Code Playgroud)

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

275
推荐指数
10
解决办法
19万
查看次数

虚拟关键字在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万
查看次数

实体框架中多列的唯一键约束

我正在使用Entity Framework 5.0 Code First;

public class Entity
 {
   [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public string EntityId { get; set;}
   public int FirstColumn  { get; set;}
   public int SecondColumn  { get; set;}
 }
Run Code Online (Sandbox Code Playgroud)

我想在两者之间进行组合,FirstColumn并且SecondColumn作为独特的组合.

例:

Id  FirstColumn  SecondColumn 
1       1              1       = OK
2       2              1       = OK
3       3              3       = OK
5       3              1       = THIS OK 
4       3              3       = GRRRRR! HERE ERROR
Run Code Online (Sandbox Code Playgroud)

反正有吗?

entity-framework constraints unique-key multiple-columns ef-code-first

222
推荐指数
8
解决办法
15万
查看次数

EF Code First中的十进制精度和比例

我正在尝试这种代码优先的方法,但我现在发现System.Decimal类型的属性被映射到decimal(18,0)类型的sql列.

如何设置数据库列的精度?

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

215
推荐指数
10
解决办法
14万
查看次数

实体框架:一个数据库,多个DbContexts.这是一个坏主意吗?

我的印象是DbContext意味着代表你的数据库,因此,如果你的应用程序使用一个数据库,你只需要一个DbContext.但是,有些同事希望将功能区域分解为单独的DbContext类.我相信这来自一个好地方 - 希望保持代码清洁 - 但它似乎不稳定.我的直觉告诉我这是一个坏主意,但不幸的是,我的直觉并不是设计决策的充分条件.

所以我正在寻找A)为什么这可能是一个坏主意的具体例子,或B)保证这一切都很好.

entity-framework ef-code-first dbcontext entity-framework-4.3

193
推荐指数
8
解决办法
10万
查看次数

实体框架6代码第一个默认值

是否有"优雅"的方式给特定属性一个默认值?

也许通过DataAnnotations,类似于:

[DefaultValue("true")]
public bool Active { get; set; }
Run Code Online (Sandbox Code Playgroud)

谢谢.

entity-framework default-value ef-code-first

187
推荐指数
9
解决办法
20万
查看次数

从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万
查看次数