Я использую .NET Core 2.1.1 с Entity Framework Core 2.1.1, и у меня есть следующий Entity:
Некоторая сущность
using System;
using System.ComponentModel.DataAnnotations;
using System.IO;
namespace MyWebApp.Models
{
public class Certificate
{
[Key]
public int Id { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime RequestedAt { get; set; }
public Stream FileStream { get; set; }
}
}
Что представляет собой объект Certificate, где я планирую хранить FileStream файла PDF, используя, конечно, последнее свойство. Но когда я пытаюсь выполнить миграцию, используя консольную команду диспетчера пакетов EF Core Add-Migration Foo
, или когда я пытаюсь запустить проект, используя базу данных в памяти, я получаю следующие ошибки:
При попытке добавить роль
Для типа объекта «поток» требуется определить первичный ключ.
Это происходит только тогда, когда в сущности присутствует последнее свойство (FileStream), если я удаляю его, оно работает нормально. Я искал другие похожие вопросы, и большинство из них указывают на:
- Первичный ключ не распознается EF из-за соглашений об именах.
- Составной ключ должен быть явно определен с использованием Fluent API.
- Просто поместите атрибут
[Key]
перед свойством первичного ключа.
Я также пытался определить первичный ключ с помощью Fluent API:
Вот мой DbContext:
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using System.IO;
namespace MyWebbApp.Models
{
public class DbContext : IdentityDbContext<IdentityUser>
{
public DbSet<ActionValue> ActionValues { get; set; }
public DbSet<Certificate> Certificates { get; set; }
public DbSet<VisualIVR> VisualIVRs { get; set; }
public DbSet<SMSRequest> SMSRequests { get; set; }
public DbContext (DbContextOptions<VysContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Certificate>()
.HasKey(c => c.Id);
}
}
Вот полная информация об исключении
System.AggregateException
HResult=0x80131500
Message=One or more errors occurred.
Source=System.Private.CoreLib
StackTrace:
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at VysMiddleware.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory) in H:/MyApp/Startup.cs:line 84
Inner Exception 1:
AggregateException: One or more errors occurred.
Inner Exception 2:
InvalidOperationException: The entity type 'Stream' requires a primary key to be defined.
Кажется, что-то связано с использованием типа Stream
, но у меня уже определен первичный ключ. Есть предложения? Большое спасибо за помощь.