标签: code-first

实体框架CTP5,代码优先.可选的导航属性

我正在使用Entity Framework CTP5(代码优先),我有两个类:

public class Order
{
   public int Id {get;set;}
   public decimal SomeOtherProperty1 {get;set;}

   //navigation property
   public virtual ICollection<OrderLine> OrderLines { get; set; }  
}
Run Code Online (Sandbox Code Playgroud)

public class OrderLine
{
   public int Id {get;set;}
   public int OrderId {get;set;}
   public decimal SomeOtherProperty2 {get;set;}

   //navigation property
   public virtual Order Order { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有OrderLine类的以下配置类:

public partial class OrderLineMap : EntityTypeConfiguration<OrderLine>
    {
        public OrderLineMap()
        {
            this.HasKey(ol=> ol.Id);

            this.HasRequired(ol=> ol.Order)
                .WithMany(o => o.OrderLines)
                .HasForeignKey(ol=> ol.OrderId);

        }
    }
Run Code Online (Sandbox Code Playgroud)

目前,如果您创建"OrderLine"实例,则必须指定"订单"实例.

问题:如何使ol.Order属性可选(在某些情况下为null)?可能吗?

asp.net entity-framework code-first

7
推荐指数
1
解决办法
4215
查看次数

实体框架(CTP5,Fluent API).重命名导航属性列

我有两个问题:

public class Address
{
        public int Id { get; set; }
 public string FirstName { get; set; 
 public string LastName { get; set; }
}

public partial class Customer
    {
        public int Id { get; set; }
        public string Email { get; set; }
        public string Username { get; set; }

        public virtual Address BillingAddress { get; set; }
        public virtual Address ShippingAddress { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

下面是映射类:

public partial class AddressMap : EntityTypeConfiguration<Address>
    {
        public AddressMap()
        { …
Run Code Online (Sandbox Code Playgroud)

entity-framework code-first

7
推荐指数
1
解决办法
4773
查看次数

升级后的EF 4.1代码优先问题

好的,所以我刚刚通过NuGet升级到EF Code First 4.1,现在我的JobSiteContext.cs类中出现了以下构建错误:

"当前上下文中不存在名称'DbDatabase'"

这是我的代码:

public class JobSiteContext : DbContext
{
    public DbSet<JobSite.Models.Job> Jobs { get; set; }

    public DbSet<JobSite.Models.Location> Locations { get; set; }

    public DbSet<JobSite.Models.Profile> Profiles { get; set; }

    public JobSiteContext()
    {
        // Instructions:
        //  * You can add custom code to this file. Changes will *not* be lost when you re-run the scaffolder.
        //  * If you want to regenerate the file totally, delete it and then re-run the scaffolder.
        //  * You can delete …
Run Code Online (Sandbox Code Playgroud)

entity-framework code-first ef-code-first

7
推荐指数
1
解决办法
3643
查看次数

EF6:创建存储过程.使用Fluent API或DBMigrations?

我首先使用EF6代码来创建我的数据库.我理解语法,DbContext和模型构建器.我使用LINQ进行了几次详尽的查询,一切正常.

但现在我需要做一些使用linq在一个查询中无法完成的事情.我需要使用存储过程执行Merge语句.

我已经看到了几个关于如何创建存储过程的问题,例如: 使用Entity Framework Code First创建存储过程?

大多数答案都在谈论为DbMigrations创建派生类并重写Up()函数.我理解我应该在Up函数中写什么以确保创建存储过程.

但是,在数据库创建过程中,我应该怎样做才能调用Up函数?

我应该在DbContext.OnModelCreating中做些什么吗?

我认为我不应该实例化DbMigrations的子类并调用Up().

上面提到的链接是在谈论"打开包管理器控件".那是什么?或者,从旧版本迁移到较新版本时,您是否真的使用此方法?

stored-procedures entity-framework code-first

7
推荐指数
1
解决办法
2711
查看次数

实体框架将IP保存为SQL Server的二进制文件

我正在学习C#,对于网络扫描项目,我想将IP地址保存为我的SQL Server的二进制文件,因为这似乎是"最佳"解决方案.

但由于我很新,我对如何告诉EF6这样做非常困惑.

我想IPAddress在我的代码中使用变量类型,但EF会将其保存为BIGINT我的数据库(使用代码优先).

我想我可以使它成为一个byte []并使用getter和setter来将二进制转换为该IPAddress类型?

或者我可以告诉它使用BINARY数据注释吗?我还需要手动进行转换吗?

有人可以为我澄清一下吗?

因为我会将大量IP保存到数据库中,所以我希望以尽可能最好的方式保存它们.

非常感谢!

c# sql-server entity-framework code-first entity-framework-6

7
推荐指数
1
解决办法
1415
查看次数

实体框架 - CTP4 - 代码优先 - 如何关闭自动复数?

我的实体名称是"联系人",我的表名是"联系人".但是,默认的复数支持是使EF4查找名为"Contacts"的表.有人知道如何关闭多元化支持吗?

这篇文章有关于多元化支持的一些细节.但仍然没有给我一个答案.

我在这篇文章中看到了以下文字.首先,我不知道我需要哪个物理.tt文件进行此更改.此外,我希望仅为一个应用程序而不是所有应用程序关闭此功能.

T4 Toolbox中的代码生成器默认情况下在Visual Studio 2010中打开了复数.如果您需要生成DAL而不进行复数化,可能出于兼容性原因,您可以通过在.tt文件中添加以下行来关闭此选项调用generator.Run()方法.

C#
generator.Pluralize = false;

VB
generator.Pluralize = False

*****UPDATE*****

以下是我使用的代码,我得到一个错误如下: -

联系

 public class Contact
 {
 public int ContactID { get; set; }
 public string FirstName { get; set; }
 public string LastName { get; set; }
 public string Title { get; set; }
 public DateTime AddDate { get; set; }
 public DateTime ModifiedDate { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

语境: -

 public class AddressBook : DbContext
 {
 public DbSet<Contact> Contact …
Run Code Online (Sandbox Code Playgroud)

code-first entity-framework-4

6
推荐指数
1
解决办法
6899
查看次数

什么是更好的设计/实践:可空房产或1价值房产和1布尔"有"属性?

我正在开发一个ASP.NET MVC应用程序,设计域模型,使用(测试)新的EF Code First功能.

我有一个活动实体可能有也可能没有截止日期,接近它的最佳方法是什么?

1物业:

public DateTime?  Deadline {get; set;}
and check vs null before using
Run Code Online (Sandbox Code Playgroud)

要么

2个属性:

public DateTime Deadline {get; set;}
public bool HasDeadline  {get; set;}
Run Code Online (Sandbox Code Playgroud)

起初我想到了第一个选项,但后来我开始考虑可能第二个选项对DB来说会更好......

这有什么最好的做法吗?

c# asp.net-mvc data-modeling code-first

6
推荐指数
1
解决办法
441
查看次数

如何使用EF CTP5 Fluent API在一对多关系中关闭级联删除

在Fluent NHibernate中,您可以为映射设置级联设置,例如

public class StoreMap : ClassMap<Store>
{
  public StoreMap()
  {
    Id(x => x.Id);
    Map(x => x.Name);
    HasMany(x => x.Staff)
      .Inverse()
      .Cascade.None();
    HasManyToMany(x => x.Products)
     .Cascade.All()
     .Table("StoreProduct");
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在实体框架"Code First"中完成这项工作?

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

6
推荐指数
1
解决办法
3274
查看次数

具有实体框架的参数化POCO构造函数

根据Initial POCO Design 1-Pager

持久性无知是指能够允许开发人员以完全独立于基础结构服务(在本例中为实体框架)的基本要求和假设的方式编写和测试域对象.此类要求/假设通常包括:

  • 需要实现特定的接口(例如,IPOCO)
  • 从基类继承
  • 提供特定的构造函数
  • 对象实例化/构造要求 - 例如使用特定工厂**
  • 需要元数据或映射类或属性属性
  • 需要使用特定的关系机制

这相当于能够使用普通旧CLR对象(PO​​CO),以便开发人员可以创建其域对象,而不受框架强加的所有假设和要求的影响.使用此方法,一旦域对象准备满意,开发人员就可以将这些类与实体框架一起使用,以便进行关系数据库访问和持久性.

截至目前(CTP5),有没有办法使用参数化构造函数重建poco?如果没有,很难看出实体框架如何被称为提供持久性无知.

domain-driven-design entity-framework poco code-first entity-framework-4

6
推荐指数
1
解决办法
5097
查看次数

实体框架CTP5(代码优先)建模 - 查找表

假设以下表结构:

表:

**Tasks**
taskID int PK
taskName varchar

**Resources**
resourceID int PK
resourceName varchar

**Assignments**
assignmentID int PK
taskID int FK
resourceID int FK
Run Code Online (Sandbox Code Playgroud)

赋值表将任务与分配给它的资源相关联.是否可以使用模型构建器映射此结构,以便我不必创建Assignment poco类 - 隐藏一些基础数据结构?

IE:

public class Task
{
    public int taskID { get; set; }
    public string taskName { get; set; }

    public virtual ICollection<Resource> resourceItems { get; set; }
}

public class Resource
{
    public int resourceID { get; set; }
    public string resourceName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何在不创建赋值poco类的情况下使用模型构建器将任务映射到资源?

entity-framework data-modeling code-first ef-code-first entity-framework-ctp5

6
推荐指数
1
解决办法
1328
查看次数