タグ付けされた質問 「entity-framework-core」

Entity Framework(EF)Cor​​eは、Microsoftが開発したオープンソースのマルチプラットフォームORMです。該当する場合は、バージョン固有のタグを追加してください。エンティティフレームワークの質問には、このタグを使用しないでください。代わりにエンティティフレームワークを使用してください。

2
Entity Framework CoreモデルでC#8.0 Nullable参照型を使用する方法
.NET Core 3.0プロジェクトでC#8.0 Nullable参照型を有効にしています。プロジェクトはEntity Framework Core 3.0を使用してデータベースにアクセスします。 以下は、タイトルがnullであってはならないデータモデルです。 public class Vehicle { public int Id { get; private set; } public string Title { get; private set; } // Entity Framework Core is instructed to bind to the private _drivers field in a configuration builder private readonly List<Driver> _drivers = …

3
Entity Framework Coreの強く型付けされたID
私は強く型付けされたIdクラスを作ろうとしていますが、これは内部で「long」を保持しています。以下の実装。私のエンティティでこれを使用している問題は、Entity Frameworkから、プロパティIDが既にマッピングされているというメッセージが表示されることです。IEntityTypeConfiguration以下を参照してください。 注:私は厳密なDDD実装を目指していません。したがって、コメントや回答の際には、このことを覚えておいてください。型付けの背後にあるID全体Idは、すべてのエンティティでIdを使用するように強く型付けされているプロジェクトにアクセスする開発者向けです。もちろんlong(またはBIGINT)に翻訳されますが、他の人にとっては明らかです。 動作しないクラスと構成の下。リポジトリはhttps://github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31にあります。 Id(現在コメントアウトされている)のクラス:https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/blob/master/Source/Common/Kf.CANetCore31/DomainDrivenDesign/Id.cs EntityおよびValueObjectクラス(EntityプロパティIdのタイプはId.cs(上)でした:https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/tree/master/Source/Common/Kf.CANetCore31/DomainDrivenDesign 構成:https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/tree/master/Source/Infrastructure/Persistence/Kf.CANetCore31.Infrastructure.Persistence.Ef/EntityTypeConfigurations Idクラスの実装(これは解決策が見つかるまでアイデアを放棄したため、現在は使用されていません) namespace Kf.CANetCore31.DomainDrivenDesign { [DebuggerDisplay("{DebuggerDisplayString,nq}")] [Obsolete] public sealed class Id : ValueObject { public static implicit operator Id(long value) => new Id(value); public static implicit operator long(Id value) => value.Value; public static implicit operator Id(ulong value) => …

6
FromSqlRawを介してEF Core 3.0でストアドプロシージャを呼び出す方法
最近、EF Core 2.2からEF Core 3.0に移行しました。 残念ながら、エンティティを返すストアドプロシージャを呼び出す方法が見つかりませんでした。 EF Core 2.0では、次のことが可能でした。 var spParams = new object[] { "bla", "xx" }; var createdPath = ModelContext.Paths.FromSql("AddNodeWithPathProc @p0, @p1", spParams).Single(); EF Core 3.0では、メソッドFromSQLはに置き換えられていFromSqlRawます。ただし、ストアドプロシージャを正常に呼び出してから、値を処理できませんでした。これは、ストアード・プロシージャーがデータベースにデータを挿入するときに役立ちます。 EF Core 3.0では、次のコードを使用します。 var createdPath = ModelContext.Paths.FromSqlRaw("AddNodeWithPathProc @p0, @p1", spParams).Single(); ただし、生成されたSQLは無効であり、次のように見えるため、例外がスローされます。 exec sp_executesql N'SELECT TOP(2) [p].[PathId], [p].[Level], [p].[NodeId], [p].[NodePath], [p].[NodePathString] FROM ( …

3
ローカル開発を中断せずにEF CoreでAzure SQL Serverエディションを指定する
Entity Framework Core は、Azure SQLサーバーのエディションを変更するためのメソッドHasServiceTierおよびHasPerformanceLevelを導入しました。次のようにOnModelCreatingで使用できます。 protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.HasServiceTier("Basic"); modelBuilder.HasPerformanceLevel("Basic"); } Add-Migration Add-Migrationを使用すると、次のような移行が行われます。 public partial class ChangedDatabaseServiceTierToBasic : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("SqlServer:EditionOptions", "EDITION = 'Basic', SERVICE_OBJECTIVE = 'Basic'"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .OldAnnotation("SqlServer:EditionOptions", "EDITION = 'Basic', …

1
EF Core 3.0と2.2でストアドプロシージャを実行する
EF Core 3.0の変更、特にの廃止に対応するためにコードを更新しようとしていますExecuteSqlCommand。 次のコードは2.2で機能していましたが、前述のように、私は取り除く必要がありますExecuteSqlCommand。 SqlParameter srcid = new SqlParameter("@srcCharacterId", participantApplication.CharacterId); SqlParameter newid = new SqlParameter("@newCharacterId", newCharacterId); SqlParameter pResult = new SqlParameter { ParameterName = "@pResult", SqlDbType = System.Data.SqlDbType.Bit, Direction = System.Data.ParameterDirection.Output }; _db.Database.ExecuteSqlCommand("pCharacterCopy @srcCharacterId, @newCharacterId, @pResult OUTPUT", srcid, newid, pResult); 呼び出しをExecuteSqlRaw(他はすべて同じにして)に変更しようとしましたが、コンパイルはできますが、実行時に次の例外がスローされます。 SqlParameterCollectionはnull以外のSqlParameterタイプのオブジェクトのみを受け入れ、SqlParameterオブジェクトは受け入れません 私はデバッガで確認しましたSqlParameterが、どれもnull ではありません。呼び出しがExecuteSqlRaw正しくフォーマットされていないと思われますが、必要のないLinqクエリに呼び出しを統合する以外の例は見つかりません。ストアドプロシージャの呼び出しを開始し、完了したら出力パラメーターを確認したいだけです。

2
FromSqlRawとEF Core 3.1のストアドプロシージャに含める
だからここに契約があります-私は現在EF Core 3.1を使用していて、エンティティがあるとしましょう: public class Entity { public int Id { get; set; } public int AnotherEntityId { get; set; } public virtual AnotherEntity AnotherEntity { get; set; } } DbSet<Entity> Entities通常の方法でアクセスするときは、次のようなAnotherEntityを含めます。 _context.Entities.Include(e => e.AnotherEntity) そしてこれはうまくいきます。なぜでしょうか?次に私は行きます: _context.Entities.FromSqlRaw("SELECT * FROM Entities").Include(e => e.AnotherEntity) これも機能します。どちらも、AnotherEntityで結合された同じオブジェクトのコレクションを返します。次に、SELECT * FROM EntitiesspGetEntitiesという名前の同じクエリで構成されるストアドプロシージャを使用します。 _context.Entities.FromSqlRaw("spGetEntities") 何だと思う?これも機能します。同じ出力が得られますが、明らかにAnotherEntityに参加していません。ただし、次のようにインクルードを追加しようとすると、 _context.Entities.FromSqlRaw("spGetEntities").Include(e => …

1
Entity Framework Coreは、メモリオーバーフローなしで大きなblobデータをトラバースします。ベストプラクティス
大量の画像データをトラバースするコードを書いて、送信用に圧縮されたすべてを含む大きなデルタブロックを準備しています。 このデータの例を以下に示します [MessagePackObject] public class Blob : VersionEntity { [Key(2)] public Guid Id { get; set; } [Key(3)] public DateTime CreatedAt { get; set; } [Key(4)] public string Mediatype { get; set; } [Key(5)] public string Filename { get; set; } [Key(6)] public string Comment { get; set; } [Key(7)] …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.