标签: ef-code-first

为什么Entity Framework没有正确保存模型上的枚举属性?

这是我的模型及其相关的枚举,我在下面使用实体框架5和asp.net mvc4 codefirst.我也在使用便携式数据库文件(.mdf)

public class Project
    {
        public Project()
        {
            Images = new List<ProjectImage>();
        }

        public int ProjectId { get; set; }
        [Required]
        public string Title { get; set; }
        public virtual ICollection<ProjectImage> Images { get; set; }
        public string Description { get; set; }
        public ProjectType Type { get; set; }
        public ProjectState State { get; set; }
    }

    public enum ProjectType
    {
        Phone,
        Web,
        Windows
    }

    public enum ProjectState : byte
    {
        InProgress,
        NotStarted,
        Done
    }
Run Code Online (Sandbox Code Playgroud)

从视图中回发模型后,除枚举字段外,所有字段都会正确保存到数据库中.它们会被保存,但即使在视图中选择了不同的值,也只会保存每个枚举类型的第一个值.

我也试过保存编辑,同样的事情也发生了. …

c# asp.net-mvc enums entity-framework ef-code-first

3
推荐指数
1
解决办法
3504
查看次数

同一个表的EF Code First Duplicate Foreign Key

我一直在阅读有关EF Code First生成重复外键的SO帖子,并尝试将解决方案应用于我的代码但无法修复我的代码.

这是我的课程

 public class Schedule
{
    public int Id { get; set; }
    public ICollection<Appointment> Appointments { get; set; }
}

public class Appointment
{
    public int Id { get; set; }
    public Schedule Schedule { get; set; }
}

public class ScheduleConfiguration : EntityTypeConfiguration<Schedule>
{
    public ScheduleConfiguration()
    {
        HasKey(s => s.Id);
        Property(s => s.Id).HasColumnName("SCHEDULEID");            
        ToTable("SCHEDULES");
    }        
}

public class AppointmentConfiguration : EntityTypeConfiguration<Appointment>
{
    public AppointmentConfiguration()
    {
        HasKey(a => a.Id);
        Property(a => a.Id).HasColumnName("APPOINTMENTID");            
        HasRequired(a => a.Schedule).WithMany().Map(x => x.MapKey("SCHEDULEID")); …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first

3
推荐指数
1
解决办法
2742
查看次数

EF Code First:CreateIndex - 覆盖索引

是否可以使用EF Code First Migrations的CreateIndex语法来创建覆盖索引(*参见下面的覆盖索引).

例如,我可以在手动迁移中创建一个简单的索引,如下所示:

CreateIndex("RelatedProduct", "RelatedId");
Run Code Online (Sandbox Code Playgroud)

它有一个名为"匿名参数"的最终参数,它指定它可以处理底层提供者支持的任何东西 - 但是我不清楚我如何确定支持是什么.这是可能的还是我需要诉诸平面SQL?

*覆盖索引是RDB在叶节点中存储重复数据的索引,而不仅仅是指向主表的指针.它本质上是由索引中的列重新排序的表的重复,仅包含该类型搜索中最常用的列.

indexing entity-framework covering-index ef-code-first ef-migrations

3
推荐指数
1
解决办法
2176
查看次数

EF Code First:主键与外键相同

我有两节课

public class Product
{
    public Guid Id { get; set; }
    public string ProductDetails { get; set; }
}

public class SpecialProductDetails
{
    public Guid Product_Id { get; set; } // PK and FK to Product class
    public string SpecialName { get; set; }
    public string SpecialDescription { get; set; }

    public virtual Product Product { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

SpecialProductDetailsProduct类映射1-1 并且是可选的.它共享相同的PrimaryKey和ForeignKey.

在Fluent API中我正在映射这种关系(内部SpecialProductDetails)

public SpecialProductDetails()
{
    HasKey(p => p.Product_Id);
    HasRequired(p => p.Product).WithMany().HasForeignKey(p => …
Run Code Online (Sandbox Code Playgroud)

entity-framework fluent-interface ef-code-first

3
推荐指数
1
解决办法
4034
查看次数

仅返回子实体Linq实体框架

给出如下内容:

public class Parent
{
    public int Id { get; set; }
    public List<Child> Children { get; set; }
}

// There is no reference to the parent in the object model
public class Child
{
    public int Id { get; set; }
    public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能加载只有一个孩子符合特定条件,对于给定父ID,还没有加载父实体?

见过使用投影加载父项零个或多个匹配条件的子项的解决方案.

linq-to-entities entity-framework ef-code-first

3
推荐指数
1
解决办法
1142
查看次数

EF Code First Fluent API - 所有列的小写首字母

我希望建立一个EF Code First约定,其中属性的所有列名都有一个小写的首字母.

但是,我有其他流畅的API代码,可以更改默认的列名.我似乎无法找到一种方法来访问属性的当前列名称,以便小写第一个字母.从PropertyInfo开始,就像在modelBuilder.Properties()中一样,因为列名可能已经设置为与成员名不同.

我如何通常告诉EF Code First小写所有列名的第一个字母?

entity-framework ef-code-first

3
推荐指数
1
解决办法
2251
查看次数

Code First和EF 5.0未加载导航属性

我试图通过Code First和EF 5.0加载导航属性子对象加载为null.下面是代码.

  [Table("ls_roles")]
    public class Role
    {
        [Required]
        [Key]
        public int RoleID { get; set; }

        [Required]
        public String BarColor { get; set; }

        [ForeignKey("RoleId")]
        public virtual ICollection<ScheduleEmployee> Employees { get; set; }
    }

    [Table("ls_ScheduleEmployee")]
    public class ScheduleEmployee
    {
        [Key]
        [Required]
        public int Id { get; set; }

        [Required]
        public int RoleId { get; set; }

        [ForeignKey("RoleId")]
        public  Role Role { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

编辑:调用代码

class Program
{
    static void Main(string[] args)
    {
        var x = new Model.ContextEntityFramework().ScheduleEmployees.FirstOrDefault(); …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first

3
推荐指数
2
解决办法
3759
查看次数

EF Code First将额外的列添加到模型中不存在的查询中

这是我关于SO的第一个问题.

我有一个ASP.NET 4.0 MVC3项目,使用EF Code First作为ORM和FluentMigrator进行版本迁移.我有Message实体类,如下所示:

public class Message
{
    [Key]
    [Column("Message_Id")]
    public int Id { get; set; }

    public DateTime CreatedTime { get; set; }

    [Required]
    [StringLength(MaxSubjectLength)]
    public string Subject { get; set; }

    [Required]
    [StringLength(MaxBodyLength)]
    public string Body { get; set; }

    public Link Link { get;set; }
}
Run Code Online (Sandbox Code Playgroud)

没有定义自定义映射,并且MSSQL Server 2012数据库表消息:

CREATE TABLE [dbo].[Messages](
    [Message_Id] [int] IDENTITY(1,1) NOT NULL,
    [CreatedTime] [datetime] NOT NULL,
    [Subject] [nvarchar](78) NOT NULL,
    [BodyHtml] [nvarchar](2000) NOT NULL,
    [Link_Id] [int] NULL,
    [Collection_Id] [int] NULL, …
Run Code Online (Sandbox Code Playgroud)

sql-generation ef-code-first

3
推荐指数
1
解决办法
3998
查看次数

实体框架代码优先 - 无效的列名称Discriminator

codefirst中的两个类

public partial class BaseEntity 
{
    public int ID { get; set; }
}

public partial class Fund : BaseEntity
{
   public int Name { get; set; }
}
public partial class InvestorFund : BaseEntity 
{
  public int FundID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

映射类

this.Property(t => t.ID).HasColumnName("FundID");
Run Code Online (Sandbox Code Playgroud)

我的代码首先加入SQL查询

from fund in context.Funds

join investorFund in context.InvestorFunds on fund.ID equals investorFund.FundID
Run Code Online (Sandbox Code Playgroud)

抛出一个 Invalid column name Discriminator

ef-code-first

3
推荐指数
1
解决办法
5720
查看次数

相关表上的不同模式名称 - 实体框架

是否可以在相关表格上使用与[dbo]不同的模式名称?

我先使用代码.

例:

ApplicationRole.cs

public class ApplicationRole
{
    public Guid ApplicationRoleId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<ADGroup> ADGroups { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ADGroup.cs

public class ADGroup
{
    public Guid ADGroupId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<ApplicationRole> ApplicationRoles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ApplicationRoleConfiguration.cs

public class ApplicationRoleConfiguration : EntityTypeConfiguration<ApplicationRole>
{
    public ApplicationRoleConfiguration()
    {
        ToTable("T_ApplicationRoles", "LabConfig");

        this.HasKey(a => a.ApplicationRoleId);

        this.Property(t => t.ApplicationRoleId)
            .HasColumnName("ApplicationRole_GUID")
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);


    } …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first

3
推荐指数
1
解决办法
736
查看次数