标签: code-first

实体框架4 - 代码优先不存储与基表分开的继承表

使用EF Code First CTP 4,我创建了一个简单的项目.该项目由2个类组成,其中一个继承自其他类.

我希望将数据存储在单独的表中,但EF 4的默认值是将这两个实体映射/存储在同一个表中.

有了.ToTable(),我可以改变这种行为,但有了这个我有副作用:当我持久化一个Inherited对象时,EF不会在基类上保留公共值(例如Id).

我确定我要离开在映射中设置一些信息,但不知道哪个.

static void Main(string[] args)
{
    Database.SetInitializer<ZooContext>(new RecreateDatabaseIfModelChanges<ZooContext>());
    using (ZooContext ctx = new ZooContext())
    {
        Mammal mam = new Mammal() ;
        mam.NumberOfLegs = 4;
        ctx.Animals.Add(mam);
        // ctx.Mammals.Add(mam)  as the same behavior
        ctx.SaveChanges();
    }
}


public class ZooContext : DbContext
{   
    public DbSet<Animal> Animals { get; set; }
    public DbSet<Mammal> Mammals { get; set; }

    protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Animal>().HasKey(p => p.Id).
                                    MapHierarchy().
                                    Case<Animal>(a => new { a.Id }); …
Run Code Online (Sandbox Code Playgroud)

entity entity-framework code-first

8
推荐指数
1
解决办法
803
查看次数

更改EF 4.1代码优先默认DB位置

我正在使用MSDN上的Code First和Entity Framework 4.1教程构建一个MVC 3应用程序并且坚持" 默认情况下,此数据库将是一个SQL Express数据库,其名称源自上下文的强类型名称它的文件将在SQL Express默认数据文件夹中."

如果我想更改默认值(例如,将MDF文件放在我的App_Data文件夹中),我该怎么做?我将有几个不同的上下文(每个主要功能区域一个),并希望它们都存在于同一个数据库中.

code-first entity-framework-4.1

8
推荐指数
1
解决办法
3571
查看次数

使用EF4 Code First:如何在不丢失数据的情况下更改模型

在我的Global.asax中,我有以下几行:

Database.SetInitializer<myDbSupport>
    (new DropCreateDatabaseIfModelChanges<myDbSupport>());
Run Code Online (Sandbox Code Playgroud)

如果我没有这个,那么当我更改模型时,sdf数据库将没有正确的结构.这在开发环境中是可以的,但是当我转向生产并希望更新数据库结构时,我当然不能放弃表,并丢失数据.

是否可以编写数据库更改脚本,并在部署具有更改结构的模型之前运行此更新?

database asp.net code-first entity-framework-4.1

8
推荐指数
1
解决办法
3491
查看次数

首先使用代码在Entity Framework中建立问题建模关系

我正在尝试在实体框架内首先学习代码,并且在建立关系时遇到问题.这是一个基本的人力资源数据库,为此有两个实体,员工和部门.

员工属于一个部门,该部门有一个团队管理员和一个经理,他们都是员工.我尝试使用以下方法对此进行建模:

EMPLOYEE

public int? DepartmentID { get; set; }
public virtual Department Department { get; set; }

Context:

modelBuilder.Entity<Employee>().HasOptional(x => x.Department);

DEPARTMENT

public class Department
{
    [Required]
    public int DepartmentID { get; set; }

    [Required(ErrorMessage = "The description is required.")]
    public string Description { get; set; }

    public int? ManagerID { get; set; }
    public virtual Employee Manager { get; set; }

    public int? TeamAdministratorID { get; set; }
    public virtual Employee TeamAdministrator { get; set; }
}

Context: …
Run Code Online (Sandbox Code Playgroud)

c# code-first entity-framework-4.1

8
推荐指数
1
解决办法
4251
查看次数

在EF Code First和SQL 2005中导致"<存储过程名称>附近的语法不正确"的原因是什么?

我发现的System.Data.Entity.Database.SqlQuery方法的示例似乎与SQL 2008 R2兼容,但似乎不适用于SQL 2005.

此调用适用于SQL 2008 R2:

var myEntities = dbContext.Database.SqlQuery<MyEntity>("GetDataFromMySp @EntityId = {0}", entityId);
Run Code Online (Sandbox Code Playgroud)

但是,在SQL 2005中,此语句将抛出一个SqlException,并显示错误消息"GetDataFromMySp'附近的语法不正确".

stored-procedures entity-framework sql-server-2005 code-first ef-code-first

8
推荐指数
1
解决办法
7492
查看次数

具有多个数据库/ DbContext的EF代码优先迁移

我有两个数据库,每个数据库都有自己的dbcontext.我设置了两个迁移配置.我可以为第一个db ust fine(Add-Migration DB1_InitialCreate -ConfigurationTypeName DB1Configuration)添加一个迁移.当我尝试使用:使用第二个db创建初始迁移时Add-Migration DB2_InitialCreate -ConfigurationTypeName DB2Configuration,我收到以下错误:

由于以下显式迁移未决,因此无法生成显式迁移:[201205082215265_DB1_InitialCreate].在尝试生成新的显式迁移之前应用挂起的显式迁移.

所以我按照它说的做,并用以下内容更新数据库:

Update-Database -ConfigurationTypeName DB1Configuration
Run Code Online (Sandbox Code Playgroud)

然后我尝试再次为第二个数据库添加迁移,但我一直收到相同的错误.

有关如何使迁移适用于两个数据库/上下文的任何想法?

entity-framework multiple-databases code-first ef-migrations

8
推荐指数
3
解决办法
8464
查看次数

ServiceStack.OrmLite中的ntext

我怎样才能在ServiceStack.OrmLite代码中首先使用nText数据类型?

public class Email
{
    [AutoIncrement]
    public long ID { get; set; }


    public DateTime Date { get; set; }

    public string From { get; set; }

    public string Subject { get; set; } 

    nText =>
    public string Body { get; set; } 

}
Run Code Online (Sandbox Code Playgroud)

如果我使用字符串数据类型,ormlite在数据库中生成nVarchar(8000)

我需要超过8000个字符的数据

c# sql-server code-first servicestack ormlite-servicestack

8
推荐指数
1
解决办法
1890
查看次数

实体框架代码首先自定义fieldd,我不想映射到DB

我正在使用EF5.在我的域类中,我有一个我不想映射到表的字段.但我必须公开它,以便其他类可以访问它:

public class Person
{
   // these are mapped fields
   public string FirstName {get;set;}
   public string LastName  {get;set;}

   // this is intended only for in-memory storage and not saved to DB
   public string LoginFromIP {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

当我尝试保存新记录时,上面的代码将生成"无效列LoginFromIP"错误消息,因为我的Person表中没有LoginFromIP.

当我删除setter它工作.我猜EF的自动映射需要getter和setter.如何在不在DB表中创建字段的情况下将LoginFromIP属性保留到域类?

谢谢!

entity-framework code-first

8
推荐指数
1
解决办法
2668
查看次数

实体框架代码首先使用SQL Server同义词

我有这样的情况,我将有多个公司访问我的应用程序的单个实例,但我需要隔离他们的数据,以避免意外地为另一家公司加载数据,并简化每个公司的数据库备份.

理想情况下,我想将数据拆分到不同的数据库中,如下所示:

  • 一个SQL Server数据库,包含所有用户的列表,以及所有用户/公司通用的任何表

  • N个公司特定的数据库,每个数据库具有相同的模式,但每个公司的数据不同.登录时,我会动态选择特定用户公司的数据库

我希望能够查询公司特定的数据表,但是可以在共享数据库上执行连接(例如,我可以将外键存储在公司数据库表中,该表连接到共享表的主键上另一个数据库).

我发现了SQL Server同义词,看起来他们可以完成这项工作,似乎我可以通过在SQL Server Management Studio中使用查询成功地在两个数据库之间加入.

是否可以在Entity Framework Code First中使用同义词表,如果是这样,我的POCO类/ DbContext需要看起来像什么?

谢谢 :)

sql-server entity-framework synonym code-first

8
推荐指数
1
解决办法
4189
查看次数

如何首先在实体框架代码中设置身份主键的起始值?

在我的项目中,我首先使用实体​​框架代码创建Appointments表。当我设置整数主键时,AppointmentNo[Key][Required]时,它会创建初始主键从 1 开始的表。

我希望预约号码从 1000 开始。我的数据库是 SQL Server。请帮我。先感谢您。

[DataContract]
public class Appointment
{
    [DataMember]
    [Key]
    [Required]
    public int AppointmentNo { get; set; }

    [DataMember]
    [Required]
    public string DoctorUN { get; set; }

    [DataMember]
    [Required]
    public string PatientUN { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

8
推荐指数
3
解决办法
9604
查看次数