标签: ef-code-first

EntityFramework - 连接字符串在哪里?

我从web.config中删除了连接字符串,Entity Framework仍然连接到数据库!连接字符串在哪里设置?这是一个问题,因为我需要将我的网站的实时版本指向实时数据库.

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

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

实体框架外键作为主键代码优先

我有两个代码第一个模型,Foo和FooState,其中Foo有一个可选的FooState.

public class Foo
{
    [Key]
    public int FooId { get; set; }

    public FooState FooState { get; set; }
}

public class FooState
{
    [Key]
    public int FooStateId { get; set; }

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

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

这工作正常,但是当我尝试将外键添加到FooState时,就像这样

public class FooState
{
    [Key]
    public int FooStateId { get; set; }

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

    [ForeignKey("Foo")]
    [Required]
    public int FooId
    public Foo Foo { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first

20
推荐指数
1
解决办法
2万
查看次数

我可以在EF实体中嵌入一个对象(在保存时序列化,在访问时反序列化)?

我有一个类,我想保留元数据 - 有几个交互场景,所以meta允许我为不同的交互类型保留不同的元.

class Feed()
{
    Guid FeedId { get; set; }
    ObjectMetaDictionary Meta { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望EF能够序列化这个ObjectMetaDictionary并将其作为字符串/ VarChar存储在数据库中.当我检索一条记录时,我希望它被反序列化为ObjectMetaDictionary.

EF支持吗?我该怎么做?

我正在使用Entity Framework Code First.

解决:我在下面提供了一个解决我的问题的答案.一旦SO允许我,我会接受这个答案.

entity-framework ef-code-first

20
推荐指数
1
解决办法
6853
查看次数

实体框架代码第一次迁移:设置主键值

我有一个表,为表的某些行存储一些额外的数据,如:

public class QuoteExtra
{
    [Key]
    public int QuoteId { get; set; }
    // More fields here
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在这个表中添加行,我明确地设置了PK.

如果我只是如上所述,设置值并提交行会导致该值被丢弃并替换为数据库中自动生成的值(并且该列在实际模式中定义为Identity列).

这似乎是正确的解决方案:

public class QuoteExtra
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int QuoteId { get; set; }
    // More fields here
}
Run Code Online (Sandbox Code Playgroud)

然而,这反而让我成为例外:

当IDENTITY_INSERT设置为OFF时,无法在表'EnumTest'中为标识列插入显式值.

那么,我如何编写我的类,以便我能够在EF中设置主键的值?

编辑:

我尝试添加以下基于代码的迁移将IDENTITY_INSERT设置为ON:

public override void Up()
{
    Sql("SET IDENTITY_INSERT QuoteExtra ON");
}
Run Code Online (Sandbox Code Playgroud)

我跑了它并再次尝试,但得到了与上面相同的例外.奇怪的是,数据库确实反映了这个设置,并且直接运行SQL确实允许我为主键插入任意值 - 因此看起来实体框架本身正在执行此规则,而忽略了识别IDENTITY_INSERT不在事实定下来了.我需要在EF本身设置它吗?

编辑2:

我误解了IDENTITY_INSERT; 我假设将它设置为无限期地保留在该表中.实际上它只要"会话"就可以存在,这意味着例如在迁移中设置它意味着它只存在......只要迁移运行,并且与我以后的.Add()之后的未来连接没有关系. ,这解释了为什么我仍然有这个例外 - 数据库确实是异常的来源,而不是EF.由于IDENTITY_INSERT每个会话最多限制一个表,因此这是一种相当低效的方法 - 首先不创建Identity PK列似乎是一个更好的路径.

primary-key ef-code-first ef-migrations entity-framework-5

20
推荐指数
1
解决办法
2万
查看次数

在Json.net中序列化一对多关系

我首先使用Entity Framework代码进行数据访问,并且我有一个具有Employees集合的Company类.Employee类还有一个Company属性.

我希望能够序列化公司并在序列化中包含员工列表.

这是公司:

public class Company
{
public long Id { get; set; }
public string Name { get; set; }
public DateTime? Established { get; set; }

public virtual IList<Employee> Employees { get; set; }

public DateTime? DateCreated { get; set; }
public DateTime? DateUpdated { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是员工

public class Employee
{
public long Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int …
Run Code Online (Sandbox Code Playgroud)

serialization entity-framework json.net ef-code-first

19
推荐指数
4
解决办法
1万
查看次数

实体框架代码第一个计算属性

我在ASP.NET MVC 3 Web应用程序中使用Entity Framework"Code First"方法.在我的数据库中,我有几个计算列.我需要使用这些列来显示数据(工作正常).

但是当我在这个表中插入行时,我收到以下错误:

无法修改"ChargePointText"列,因为它是计算列或是UNION运算符的结果.

有没有办法在我的课堂上将房产标记为只读?

public class Tariff
{
    public int TariffId { get; set; }
    public int Seq { get; set; }
    public int TariffType { get; set; }
    public int TariffValue { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int ChargePoint { get; set; }
    public string ChargePointText { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

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

带有ReturnValue参数的EF ExecuteStoredCommand

我正在创建一个需要与遗留代码接口的新应用程序:(.

我试图调用的存储过程使用RETURN作为结果.我尝试执行和使用返回值会导致异常:

InvalidOperationException:执行命令时,参数必须是数据库参数或值.

不希望更改存储过程以另一种方式返回值,因为它要么需要更新遗留应用程序,要么维护几乎重复的存储过程.

遗留存储过程简介:

DECLARE @MyID INT
INSERT INTO MyTable ...
SELECT @MyID = IDENTITY()
RETURN @MyID
Run Code Online (Sandbox Code Playgroud)

我的实体框架/ DbContext工作,产生上述InvalidOperationException.

 SqlParameter parm = new SqlParameter() {
    ParameterName = "@MyID",
    Direction = System.Data.ParameterDirection.ReturnValue
 };

 DbContext.Database.ExecuteSqlCommand("EXEC dbo.MyProc", parm);
Run Code Online (Sandbox Code Playgroud)

寻找任何和所有不需要修改存储过程的解决方案.

sql-server ef-code-first entity-framework-4.1

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

'System.Data.Entity.Infrastructure'的参考是什么?

使用Entity Framework Power Tools Beta 2扩展,它使用以下导入生成模型类:

using System.Data.Entity.Infrastructure;
Run Code Online (Sandbox Code Playgroud)

我需要使用Visual Studio 2010将哪些参考包含到我的项目中?

目前,我有以下参考资料:

  • log4net的
  • 系统配置
  • System.Core程序
  • System.Data
  • System.Data.Entity的
  • 的System.Web
  • System.Web.Mvc
  • 了System.XML

在" 添加引用"对话框中,我有以下内容:

添加参考对话框

visual-studio-2010 ef-code-first entity-framework-5

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

首先在实体框架代码中映射多对多关系

我尝试在EF中进行测试,创建多对多的关系,因为我总是将One映射到One或One to Many,我已经在互联网上试了一个例子,这个例子适用于插入寄存器,但我无法读取寄存器

这是我的课程,我不知道是什么HashSet,我在网站上得到了这个代码

public class Person
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public ICollection<Course> CoursesAttending { get; set; }

    public Person()
    {
        CoursesAttending = new HashSet<Course>();
    }
}

public class Course
{
    public int CourseId { get; set; }
    public string Title { get; set; }

    public ICollection<Person> Students { get; set; }

    public Course()
    {
        Students = new HashSet<Person>();
    } …
Run Code Online (Sandbox Code Playgroud)

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

19
推荐指数
1
解决办法
4万
查看次数

在IQueryable上调用ProjectTo <T>()时,AutoMapper抛出StackOverflowException

我使用EF Code First创建了具有彼此集合的类.实体:

public class Field
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual List<AppUser> Teachers { get; set; }
    public Field()
    {
        Teachers = new List<AppUser>();
    }
}

public class AppUser
{
    public int Id { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string UserName => Email;
    public virtual List<Field> Fields { get; set; }
    public AppUser()
    {
        Fields …
Run Code Online (Sandbox Code Playgroud)

c# stack-overflow entity-framework automapper ef-code-first

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