标签: ef-code-first

使用实体框架处理自定义字段

目前我有一个项目需要处理具有用户可以指定的自定义字段的产品。

有谁知道使用模型和代码优先注释实现此目的的最佳方法是什么?

我想在数据库方面,我需要一个新表来处理链接到 ProductID 的自定义数据。

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

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

如何更改实体框架 6 中字符串属性的默认最大长度?

默认情况下,实体模型中未明确指定最大长度的字符串属性在nvarchar(max)数据库中设置为。我们希望覆盖这个约定并给字符串一个最大长度,nvarchar(100)如果它们还没有明确设置的话。

我发现了PropertyMaxLengthConvention内置约定,根据其描述和文档,这似乎是我正在寻找的。但是,它要么不起作用,要么我用错了它,要么就是它没有做我认为的那样。

我试过简单地添加约定:

modelBuilder.Conventions.Add(new PropertyMaxLengthConvention(100));
Run Code Online (Sandbox Code Playgroud)

然后我想也许默认的已经被使用了,所以我先尝试删除它:

modelBuilder.Conventions.Remove<PropertyMaxLengthConvention>();
modelBuilder.Conventions.Add(new PropertyMaxLengthConvention(100));
Run Code Online (Sandbox Code Playgroud)

我什至尝试在默认约定之前和之后显式添加约定:

modelBuilder.Conventions.AddBefore<PropertyMaxLengthConvention>(new PropertyMaxLengthConvention(100));
modelBuilder.Conventions.AddAfter<PropertyMaxLengthConvention>(new PropertyMaxLengthConvention(100));
Run Code Online (Sandbox Code Playgroud)

没有喜悦。当我添加迁移时,列仍然创建为nvarchar(max).

有没有办法使用该约定来做我想做的事?如果没有,我是否可以编写一个自定义约定,将默认字符串属性设置为nvarchar(100)但仍允许我将它们显式设置为不同的值,包括 maxlength?

ef-code-first entity-framework-6.1

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

实体框架代码优先字符串与 Oracle Db 的比较

我首先使用代码对 Oracle 数据库进行不区分大小写的字符串比较时遇到问题。代码看起来像这样;

String filter = "Ali";
var employee = dbContext.Employees.Where(x => x.Name.Contains(filter)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

上面的代码区分大小写。所以我将 Name 和 filter 都转换为大写;

String filter = "Ali";
filter = filter.ToUpper();
var employee = dbContext.Employees.Where(x => x.Name.ToUpper().Contains(filter)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

一开始似乎一切正常,但后来我意识到当员工姓名或过滤器包含字符“i”时它不起作用。问题是字母 i 在土耳其语中是如何工作的。

在大多数语言中,“i”代表小写字母,“I”代表字符的大写版本。但是在土耳其语中,“i 的大写字母是 '?”,而“I 的小写字母是 '?”。这是一个问题,因为 Oracle 将数据库中的字母“i”大写为“I”。

我们无法访问数据库的字符编码设置,因为它的影响不容易预见。

我想出的是这个,它非常丑陋。

String filterInvariant = filter.ToUpper(CultureInfo.InvariantCulture);
String filterTurkish = filter.ToUpper(CultureInfo.CreateSpecificCulture("tr-TR"));
var employee = dbContext.Employees.Where(x => x.Name.ToUpper().Contains(filterInvariant) || x.Name.ToUpper().Contains(filterTurkish)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

它似乎解决了一些问题,但感觉像是一种蛮力的解决方法,而不是一个可靠的解决方案。在对 Oracle 数据库使用 Code First C# 时,最佳实践或替代方法是什么?

提前致谢

c# linq oracle string-comparison ef-code-first

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

如何使用代码优先方法在实体框架 7 中播种存储过程?

我们正在首先使用实体​​框架和代码在 .Net 中创建一个新应用程序。

我们目前的问题是,有没有办法在特定文件中编写所有存储过程,并在创建新数据库时运行/执行它们。

主要思想是在 Seed 方法中编写一些逻辑并从 txt 文件中读取数据并执行那些 st。程序。

如果有任何其他可能的方法更好或更优雅,请指导。以及这种运行圣的方法。程序是否可取。任何帮助表示赞赏。

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

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

在 EF Core 中添加迁移时出现“实体类型‘CustomAttributeData’需要定义主键”错误

我把我的模型放在一个带有 Core 的类库中。我已经进行了第一次迁移来测试我的模型的一部分,但是在进行了很大的增强之后,我删除了我的数据库和迁移,只有一个 V1 迁移。

问题是,在删除之后,当我尝试出现add-migration此错误时:

System.InvalidOperationException: The entity type 'CustomAttributeData' requires a primary key to be defined.
   at Microsoft.EntityFrameworkCore.Internal.ModelValidator.ShowError(String message)
   at Microsoft.EntityFrameworkCore.Internal.ModelValidator.Validate(IModel model)
   at Microsoft.EntityFrameworkCore.Internal.RelationalModelValidator.Validate(IModel model)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
   at Microsoft.EntityFrameworkCore.Internal.LazyRef`1.get_Value()
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at …
Run Code Online (Sandbox Code Playgroud)

c# ef-code-first entity-framework-core asp.net-core

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

EF 代码首先不创建数据库

这是我的代码:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<AppDbContext>(options =>
    { 
     options.UseSqlServer(Configuration.GetConnectionString("AppDbContext"));
    });

    services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)

这是我的 DbContext:

public class AppDbContext : DbContext
{       
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {

    }

    public DbSet<Actor> Actors { get; set; }
    public DbSet<Movie> Movies { get; set; }
    public DbSet<MovieActor> MovieActors { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我的 ConnectionString 很好。我真的很想知道为什么我的数据库在运行这段代码时没有生成?断点正在行中,services.AddDbContext但是当我在AppDbContext其中放置断点时没有命中。有人可以帮忙吗?我的代码看起来像这样https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

c# entity-framework ef-code-first asp.net-core ef-core-2.0

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

如何在 Azure 部署的应用程序中应用数据库代码优先迁移?

我刚刚将一个应用程序部署到一个 azure 应用服务中。我的项目确实有要应用的迁移。但是我无法通过使用 azure app 命令行来应用它们

dotnet ef 数据库更新

D:\home\site\wwwroot> 找不到匹配命令“dotnet-ef”的可执行文件

我如何远程应用它们?

.net azure ef-code-first dotnet-cli

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

自定义实体框架核心迁移脚本?

我需要进行“全文索引”,但我使用的是 ef core 2.1 代码第一次迁移,但完整索引在核心中没有一流的支持。

我如何编写自己的迁移,以便在应用其他生成的迁移时应用?

entity-framework ef-code-first entity-framework-core entity-framework-migrations

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

EF Core 一对多关系列表返回 null

我正在尝试学习如何在 EF Core 中正确使用 DbContext。我有一个团队课程:

public class Team 
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool CanSelfManage { get; set; } = false;
    public virtual List<Mileage> Mileages { get; set; }
    public IdentityUser Member { get; set; }
    public string State { get; set; }
    public List<Horse> Horses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

还有一个里程类:

public class Mileage
{
    public int ID { get; set; }
    public virtual Team Team { get; …
Run Code Online (Sandbox Code Playgroud)

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

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

尝试创建初始迁移 EF Core 3 asp.net Core 时出错

我有以下课程:

public class Quiz 
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public string UserToken { get; set; }
        public List<JoinQuizAndArea> AreasOfQuizzes { get; set; }
        public List<QuizQuestion> Questions { get; set; }
}
public class QuizQuestion
    {
        public int ListRanking { get; set; }
        public string Question { get; set; }
        public string Answer1 { get; set; }
        public string Answer2 { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# ef-code-first asp.net-core entity-framework-migrations ef-core-3.0

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