相关疑难解决方法(0)

如何在aspnetcore/entityframeworkcore中设置命令超时

设置命令超时的位置不再与早期版本相同.

但是,我找不到任何说明如何改变它的地方.

我正在做的是上传非常大的文件,这需要超过默认的30秒保存.

请注意,我在另一个问题中询问命令超时,而不是迁移超时.

c# entity-framework-core asp.net-core

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

代码首先自定义SQL迁移超时异常

我试图通过执行自定义Sql使用Entity Framework Migration创建FULL TEXT索引.

我的迁移类看起来像这样:

public partial class DocumentContentFullTextIndex : DbMigration
{
    public override void Up()
    {
        AlterColumn("dbo.Attachments", "ContentType", c => c.String(maxLength: 260));

        Sql("CREATE FULLTEXT CATALOG FullTextIndexes AS DEFAULT;", true);

        Sql(@"CREATE FULLTEXT INDEX ON [Attachments](
Content
    TYPE COLUMN ContentType
    Language 'ENGLISH'
)
KEY INDEX [PK_dbo.Attachments]
ON FullTextIndexes;", true);
    }

    public override void Down()
    {
        AlterColumn("dbo.Attachments", "ContentType", c => c.String(maxLength: null));

        Sql("DROP FULLTEXT INDEX ON [Attachments]");
        Sql("DROP FULLTEXT CATALOG FullTextIndexes");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我从MSSQL管理工作室运行它时,一切都很完美,SQL完全符合我的预期.

但是当从迁移项目运行时,第二个Sql请求会触发异常

超时已过期.操作完成之前经过的超时时间或服务器没有响应.

带-Verbose标志的完整堆栈跟踪:

Update-Database -ConnectionStringName DatabaseContext -Verbose
Using …
Run Code Online (Sandbox Code Playgroud)

full-text-indexing sql-server-2012 ef-migrations entity-framework-6

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

如何使用不同的连接字符串(但相同的数据库)进行迁移

我一直在使用这样的连接字符串将我的网站连接到我的数据库:

<add name="MyDb" 
     connectionString="Data Source=MyDb;
     Initial Catalog=Staging;
     User Id=website_staging;
     Password=secret;" 
     providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

website_staging用户是该角色的成员db_ddladmin,因此当我发布并且我的MigrateDatabaseToLatestVersion初始化程序运行时,它具有自动将数据库迁移到最新版本所需的权限。

我想减少标准用户的权限(通过仅将其添加到db_datareaderdb_datawriter角色)并在迁移期间与不同的用户(在db_ddladmin角色中)连接。

所以我添加了另一个具有不同名称和用户的连接字符串:

<add name="Migrations" 
     connectionString="Data Source=MyDb;
     Initial Catalog=Staging;
     User Id=website_staging_migrations;
     Password=secret;" 
     providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

我更改了类中初始化的上下文所使用的连接字符串的名称DatabaseMigrationConfig

public class DatabaseMigrationConfig
{
    internal static void Register()
    {
        using (var context = new MyDbContext(Name="Migrations"))
        {
            Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, 
                                    Migrations.Configuration>());
            context.Database.Initialize(false);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的类的构造函数中,Migrations.Configuration我还更改了连接字符串:

internal sealed class Configuration : DbMigrationsConfiguration<SID2013Context>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false; …
Run Code Online (Sandbox Code Playgroud)

entity-framework

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

将模型 .net Core 2.2 中关键属性的数据类型从 int 更改为 long

我想将 ASP.Net core 2.2 中模型的主键的数据类型从 int 更改为 long,因为它即将超出 int 范围。该应用程序以代码为先,并使用 SQL 服务器作为数据库。

更改模型中的数据类型有效并且运行 Add-Migration 也有效,但 Update-Database 失败并显示错误:

System.Data.SqlClient.SqlException (0x80131904): The index 'IX_tblMTransactions_OriginalTransactionId' is dependent on column 'OriginalTransactionId'.
The object 'FK_tblMTransactions_tblMTransactions_OriginalTransactionId' is dependent on column 'OriginalTransactionId'.
Run Code Online (Sandbox Code Playgroud)

所以我阅读了它,似乎需要对迁移进行一些调整,例如在列更改之前删除外键和索引,然后将它们带回来。不幸的是,我找不到任何有关在 .net core 2.2 中执行此操作的有用信息,我找到的最接近的是这个问题,但它谈到了 .net core 2.1 和选项DropForeignKeyDropIndex 提到那里似乎不再可用.net core 2.2 根据这篇文章

这是迁移类:

public partial class _20190817_1746 : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AlterColumn<long>(
            name: "OriginalTransactionId",
            table: "tblMTransactions",
            nullable: true,
            oldClrType: typeof(int),
            oldNullable: true); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core-mvc entity-framework-core-2.2

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