标签: entity-framework-5

“更新数据库”实体框架代码首先不再添加表

我首先在我的网站中使用 Entity Frame work 5 代码。一切都很好,我一直在使用

更新数据库-详细

然而,用新数据或新结构和模型更新数据库;update-database 突然停止工作,它不再跟踪模型和新表中的更改。

我在互联网上搜索过,有人说我必须删除数据库上下文并重新创建它才能使其工作。我不能这样做,项目有点大,如果我删除数据库上下文,将影响超过 4k 行。

我使用的是第三次更新的 Visual Studio 2012,所以更新也不是解决方案。

有什么建议。

entity-framework entity-framework-5

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

无法从 PK 中删除身份属性

我需要将其中一个表上主键的数据类型从 int 更改为字符串(我没有说我想要...)。迁移生成以下代码:

AlterColumn("dbo.Venues", "ID", c => c.String(nullable: false, maxLength: 128));
Run Code Online (Sandbox Code Playgroud)

这会导致 SQL Server 抱怨数据类型必须是 int、bigint 等,因为该列是标识列。我添加了以下内容,但似乎没有效果:

AlterColumn("dbo.Venues", "ID", c => c.Int(identity:false));
Run Code Online (Sandbox Code Playgroud)

问题:如何进行迁移以将数据类型从 int 更改为 string?

以下可能与我的问题有关,但不一定:迁移生成的唯一代码是上面显示的第一个 AlterColumn。当以本机生成方式运行时,迁移导致 SQL Server 抱怨它无法更改列,因为存在依赖关系。事实上,唯一的依赖是它是一个 PK(没有表将它引用为 FK)。我将迁移修改为如下所示,现在我收到了如上所示的数据类型错误。

DropPrimaryKey("dbo.Venues");
AlterColumn("dbo.Venues", "ID", c => c.Int(identity:false));
AlterColumn("dbo.Venues", "ID", c => c.String(nullable: false, maxLength: 128));
AddPrimaryKey("dbo.Venues", "ID");
Run Code Online (Sandbox Code Playgroud)

entity-framework-5 entity-framework-migrations

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

重写 Entity Framework 5 中的 SaveChanges

我使用 C# 使用“从数据库生成”生成了数据库模型。POCO 类和上下文是使用 T4 模板生成的。一切工作正常,应用程序能够编辑、插入等,但我无法覆盖实体类中的 SaveChanges 方法。我需要这样做来添加业务逻辑。这是上下文类:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace WebApplication1
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

   public partial class IInvoiceEntities2 : DbContext
   {
        public IInvoiceEntities2 ()
            : base("name=IInvoiceEntities2 ")
        {
        }        


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    { …
Run Code Online (Sandbox Code Playgroud)

entity-framework asp.net-dynamic-data entity-framework-5

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

本地IIS无法连接本地数据库

我正在使用来自 (localdb)\V11.0 服务器的数据库,并且在使用来自 VS2013 的 IIS express 时能够成功连接,但是在 LocalIIS 中部署时,它给了我以下错误 -

与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。

为了解决这个问题,我更新applicationHost.config了如下文件

<add name="DefaultAppPool">
    <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
 </add>
Run Code Online (Sandbox Code Playgroud)

现在,虽然数据库没有连接,但它显示了一个主页,但所有数据驱动的下拉值都是空的。我也尝试更改Application poolLocalSystem但网站无法连接数据库。是否有我需要调查的特定领域?

c# sql-server iis-7 entity-framework-5

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

无法将源类型 system.nullable 转换为目标类型 int

在尝试使用实体框架检索数据并分配给我的自定义类 Customer 时,我不断收到以下错误消息

无法将源类型“system.nullable”转换为目标类型“int”

CustomerNumber 和 Route 的数据类型为 Int32,并且数据库中的字段允许空值

        select new Customer()
            {
                AccountListId = j.cost1,
                Csr = j.cost2,
                CustomerName = j.cost3,
                Address = j.cost4,
                Telephone = j.cost5,
                Contact = j.cost6,
                CustomerNumber = j.cost7,
                Branch = j.cost8,
                Route = j.cost9,
            }).ToList<Customer>();
Run Code Online (Sandbox Code Playgroud)

我该如何处理?

c# linq entity-framework-5

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

获取实体框架中忽略的属性

我使用 EF 开发框架。我想获取实体的所有被忽略的属性来构建一些特殊查询。我该怎么做?

public class Customer
{
    public int Id { get; set; }
    public DateTime BirthDate { get; set; }
    public int Age { get; set; }
}

public class CustomerContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer>().Ignore(customer => customer.Age);
        base.OnModelCreating(modelBuilder);
    }

    public DbSet<Customer> Customers { get; set; }
}

public static class DbContextExtensions
{
    public static List<string> GetIgnoredProperties(this DbContext context, string entityTypeName)
    {
         // ???
    }
}
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first entity-framework-5 entity-framework-6

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

C# linq 查询过滤器子集合

再会,

我有一个像下面这样的模型类

    public class EmployeeModel
    {
      [Key]
     public int employeeId{get;set;}
     public string Fullname {get;set;}
     public string Address{get;set;}
     public ICollection<PaymentModel> Payments {get;set;}
    }


    public class PaymentModel
    {

      [Key]
     public int PaymentId{get; set;}
     public int employeeId{get; set;}
     public decimal PaymentAmount{get; set;}
      public int IsPosted {get; set;}
      public virtual EmployeeModel Employee {get; set;}

    }
Run Code Online (Sandbox Code Playgroud)

我只想使用 linq 查询员工列表及其付款列表。所以我这样编码:

dbcontext db = new dbcontext();
var listing = from d in db.Employees
              .include("Payments")
               select d;
Run Code Online (Sandbox Code Playgroud)

此列表显示所有员工及其所有付款。但我需要过滤 IsPosted = 1 的每个员工付款

所以作为最初的答案,我会做这个代码;

dbcontext db = new dbcontext(); …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework-5

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

我如何检查属性是否在更新前实际更改

我正在使用 EF 5(不是 6)。我有一个低于类的对象,它在使用 EF 的数据库中。

public class Student
{
  public string Name { get; set; }
  public int Age { get; set; }
  public DateTime DOB { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

稍后的,

我收到了对同一对象/记录进行更新的请求。

但是在进行更新调用之前,我想交叉比较属性是否实际更改,因为我可能会获得相同的更新记录,因此不想进行盲目更新。

 var student = _context.Students.select(x =>x.Name == "").first();
 student.name = "";
 student.age = "";
 student.DOB = "";
_context.Entry(student).State = EntityState.Modified;
_context.saveChanges();
Run Code Online (Sandbox Code Playgroud)

EF 是否为我提供了一些内置方法?

或者,我需要一个一个地交叉比较每个属性并决定?我可以有20个属性...

请问有什么想法吗?

c# entity-framework entity-framework-5

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

表“AspNetRoles”中的列“Id”的类型无法用作索引中的键列

我使用的是.net5.0 EF

我有一个 AppUser 类并将其扩展为 IdentityUser

public class AppUser : IdentityUser
{
}
Run Code Online (Sandbox Code Playgroud)

我正在使用命令生成 EF 迁移 dotnet ef migrations add "myMessage" -p Persistence -s API

我已经删除了所有以前的迁移文件,所以这是一个新的迁移。

我也删除了数据库。

我能够在 sqlLite 中成功生成新数据库。

但是当我尝试在生产/测试服务器 SQL 中执行相同操作时,它给了我以下问题。

fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (38ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
      CREATE TABLE [AspNetRoles] (
          [Id] TEXT NOT NULL,
          [Name] TEXT NULL,
          [NormalizedName] TEXT NULL,
          [ConcurrencyStamp] TEXT NULL,
          CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id])
      );
fail: API.Program[0]
      An error occured during migration
      Microsoft.Data.SqlClient.SqlException (0x80131904): Column 'Id' in table 'AspNetRoles' is …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-5 asp.net-identity

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

使用EF更新数据库中的实体而不检索现有实体

可能重复:
如何更新记录而不在ADO.NET实体框架中再次选择该记录?

我正在开发一个Windows应用程序,我需要在网格中显示对象及其子项列表.因此用户可以修改从实体框架中检索的实体.

在更新db中的对象时,看起来需要从db检索对象并分配新值.这可能会导致性能问题.有没有解决这个问题?

    public class Vehicle
    {
        public Vehicle()
        {
            this.Fillups = new List<FillupEntry>();
            this.Reminders = new List<Reminder>();
        }
        public int VehicleId { get; set; }
        public int UserId { get; set; }
        public string Name { get; set; }
        public string ModelName { get; set; }
        public ICollection<FillupEntry> Fillups { get; set; }
        public ICollection<Reminder> Reminders { get; set; }
    }




        public void Update(Vehicle updatedVehicle)
        {
            Vehicle vehicleToUpdate =
                this.GetDbSet<Vehicle>()
                        .Where(v => v.VehicleId == updatedVehicle.VehicleId)
                        .First();

            vehicleToUpdate.Name = …
Run Code Online (Sandbox Code Playgroud)

c# ef-code-first entity-framework-5

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