标签: dbcontext

EF4.3 知道上下文是否已成功插入实体

我在通用基类中有以下方法:

    public virtual void Insert(TEntity entity) {
        dbSet.Add(entity);
    }
Run Code Online (Sandbox Code Playgroud)

我的服务层使用该Insert方法添加新记录。现在我希望能够返回一个布尔值,以确保它正确插入。类似于以下内容:

    public virtual int Count {
        get {
            return dbSet.Count();
        }
    }

    public virtual bool Insert(TEntity entity) {
        int count = this.Count;
        dbSet.Add(entity);

        return this.Count == count + 1;
    }
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方法呢?我是否完全错误地接近它?我可以为 Delete 方法做类似的事情,但是我将如何检查 anUpdate是否已成功执行?

entity-framework asp.net-mvc-3 dbcontext

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

How can I find a object from dbcontext with string parameter, not with Find(primary key) function

是的, context.Accounts.Find(id) ,其中 id 是主键,它确实为我带来了正确的帐户。但我想从 context.Accounts 中使用字符串用户名进行搜索,而不是按主键。

更准确地说,方法:

public void Authenticate(string username, password)
{       result = false;
        Accounts test = new Accounts();
        test.User = username;
        Accounts dbEntry = new Accounts();
        dbEntry = context.Accounts_.Find(test.User);

        if (dbEntry.Password == password)
            if(dbEntry.Admin == 1)
              result = true;
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

那么用户名不再是主键,我如何在没有 Find() 函数的情况下找到正确的用户名?

c# asp.net-mvc entity-framework dbcontext

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

KeyValuePair 来自在实体框架上运行原始 SQL 查询

我正在运行以下查询和代码,我希望在 KeyValuePair 上返回两列。我看到返回的总行是正确的,但所有的键值对都是空的!

string query = @"Select id,name from persons";

var persons = context.Database.SqlQuery<KeyValuePair<string,string>>(query);
Run Code Online (Sandbox Code Playgroud)

我看到一个答案说我必须创建一个类才能得到结果;但我的问题是我不能在 KeyValuePair 上得到结果吗?或者我必须定义一个属性匹配的类?

c# linq entity-framework entity-framework-4 dbcontext

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

有没有办法用 dbcontext 全部包含()?

DbContext使用预先加载查询 a时,需要Include("Navigation")填充导航属性。然而,在某些情况下,我想简单地为一个实体提供Include 所有导航属性。有没有办法做到这一点,或者有办法做到这一点?我假设你可以通过反思,但我宁愿避免这种情况。

我知道的:

var entity = db.Table.Include("Navigation1").Include("Navigation2").First();
Run Code Online (Sandbox Code Playgroud)

我想要的是:

var entity = db.Table.IncludeAll().First(); 
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework eager-loading dbcontext

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

MVC 5 - IdentityDbContext 调用 Database.Exists 在每个页面上

我开发了一个 MVC5 应用程序。数据库上下文派生自IdentityDbContext. 当我创建数据库上下文的实例并调用基类时,它IdentityDbContext正在调用一个Database.Exists()方法。

无论如何我可以阻止它,因为当用户点击登录页面时,它需要一个UserManager需要 a 的DbContext,因此它查询数据库以查看数据库是否存在。

在任何情况下,在每个页面上,我的控制器构造函数都会设置它,UserManager以便始终发送此查询。

谢谢。

c# entity-framework dbcontext

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

无法转换类型为“Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope”的对象

所以我试图实现我的 IoC,将我的 DBContext 类链接为依赖注入作为服务提供者。

我在启动 ASP Core 应用程序时遇到此错误所以我的问题是;我做错了什么,我尝试用谷歌搜索它,但我无法真正找到解决方案。我尝试询问校园里一些更精英的程序员,但他们没有专门使用 ASPnet Core,所以他们不知道这是因为我的选角还是因为 ASPnet Core

应用程序启动异常:System.InvalidCastException:无法将类型“Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope”的对象强制转换为类型“Microsoft.Extensions.DependencyInjection.ServiceProvider”。在 F:\Developement\SpackkMVC\Spackk\Spackk\Startup.cs 中的 Spackk.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider) 处:第 44 行 --- 抛出异常的上一个位置的堆栈跟踪结束 --- - 在 Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder 应用程序) 在 Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder 应用程序) 在 Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder 构建器)在 Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() crit:Microsoft.AspNetCore.Hosting.Internal.WebHost[6] 应用程序启动异常 System.InvalidCastException:无法转换类型为“Microsoft.Extensions.DependencyInjection.ServiceLookup”的对象.ServiceProviderEngineScope”以键入“Microsoft.Extensions.DependencyInjection.ServiceProvider”。在 F:\Developement\SpackkMVC\Spackk\Spackk\Startup.cs 中的 Spackk.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider) 处:第 44 行 --- 抛出异常的上一个位置的堆栈跟踪结束 --- - 在 Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder 应用程序) 在 Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder 应用程序) 在 Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder 构建器)在 Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

这是启动时代码的样子

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection dbcontext asp.net-mvc-5 asp.net-core

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

DbContext 的 C# 问题:参数 1:无法将“字符串”转换为“Microsoft.EntityFrameworkCore.DbContextOptions”

我有一些问题DbContext。我决定创建一个新类,它将负责与DataBase 的连接。

public class PetAlertContext : DbContext
{
    public PetAlertContext() : base("PetAlert") { }

    public DbSet<Zwierze> Zwierzaki { get; set; }
        public DbSet<Osoba> Osoby { get; set; }
        public DbSet<Placowka> Placowki { get; set; }
        public DbSet<Ogloszenie> Ogloszenia { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我在基地名称附近有一些例外:

参数 1:无法将“字符串”转换为“Microsoft.EntityFrameworkCore.DbContextOptions”。

我发现了类似的问题和类似这样的代码的响应,但我在理解这种结构时遇到了一些问题。

你会这么好心帮我吗?我评论了这些:

public PetAlertContext(string connectionString) : base(GetOptions(connectionString))
{
}

private static DbContextOptions GetOptions(string connectionString)
{
    return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), connectionString).Options;
}
Run Code Online (Sandbox Code Playgroud)

c# database string dbcontext entity-framework-core

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

dbset 属性的 DBcontext 类中的不可为空属性警告

我的数据库上下文类如下

public class DataContext : DbContext
{
    public DataContext(DbContextOptions options) : base(options) 
    {
    }
    
    public DbSet<Customer> Customers;
    public DbSet<Order> Orders;
}
Run Code Online (Sandbox Code Playgroud)

它警告说

non-nullable property 'Orders' must contain a non-null value when exiting the constructor. Consider declaring the property as nullable
Run Code Online (Sandbox Code Playgroud)

我手头上有两个选择可以解决,但不确定哪个是好的。

选项 1) 使属性可为空

public DbSet<Order>? Orders;
Run Code Online (Sandbox Code Playgroud)

选项 2) 在构造函数中将属性设置为空集

public DataContext(DbContextOptions options) : base(options) 
    {
        this.Orders =  this.Set<Order>();
    }

Run Code Online (Sandbox Code Playgroud)

哪一个是解决此警告的最佳选项,并且还支持测试用例。?

c# warnings entity-framework dbcontext dbset

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

实体框架:插入更新记录(而不是更新)

我正在使用以下代码来更新db中的某些记录:

        IList<Item> list;
        using (DbContext context = new DbContext()
        {
            list = Item.ToList();
            foreach (Item item in list)
            {
                // attach the item
                context.Item.Attach(item);

                item.Updated = DateTime.Now; 
                context.Items.Add(item);
                context.SaveChanges();
             }
        }
Run Code Online (Sandbox Code Playgroud)

问题是EF正在插入一个新项目,而不是更新更新的项目......我在网站上搜索了abit并看到了将项目附加到DbContext的建议,但那不起作用?我究竟做错了什么?

entity-framework updating dbcontext

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

如何检查数据库表中是否存在用户输入?

所以我有我的Weapons数据库.我的应用程序的工作方式是,如果用户在文本框中键入某些内容,我的程序将搜索该WeaponName表以查看它是否存在.

问题是当我使用这个Lambda/LINQ时,它不能将它用作bool值.

private WeaponEntities dbContext = new WeaponEntities();

if (dbContext.Weapons.Where(weapon => weapon.WeaponName == searchBox.Text))
{

}
Run Code Online (Sandbox Code Playgroud)

c# sql linq lambda dbcontext

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