gpt4 book ai didi

asp.net-mvc - 包含文件的 ASP.NET MVC 模型

转载 作者:行者123 更新时间:2023-12-02 03:23:41 25 4
gpt4 key购买 nike

您好,我正在尝试添加一个可以将文件存储到现有 ASP.NET MVC Code First 项目的模型。

namespace MyMVCApp.Models
{
public class FileUpload
{
[Key]
public int ID { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }

[Required]
public HttpPostedFileBase File { get; set; }
}
}

我已将以下内容添加到项目的 DbContext 文件中:

public DbSet<FileUpload> FileUploads { get; set; }

我正在尝试使用包管理器控制台中的 Entity Framework 迁移将表添加到现有数据库:

PM> Add-Migration FileUpload

运行 ubove 命令时出现以下错误:

System.Data.Entity.ModelConfiguration.ModelValidationException: One or more validation errors were detected during model generation:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'HttpPostedFileBase' has no key defined. Define the key for this EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'HttpPostedFileBases' is based on type 'HttpPostedFileBase' that has no keys defined.

at System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl(EdmModel model, XmlWriter writer)
at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)

at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.LazyInternalContext.get_CodeFirstModel()
at System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context, XmlWriter writer)
at System.Data.Entity.Migrations.Extensions.DbContextExtensions.<>c__DisplayClass1.<GetModel>b__0(XmlWriter w)
at System.Data.Entity.Migrations.Extensions.DbContextExtensions.GetModel(Action`1 writeXml)
at System.Data.Entity.Migrations.Extensions.DbContextExtensions.GetModel(DbContext context)
at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext)
at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration)
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator()
at System.Data.Entity.Migrations.Design.ToolingFacade.GetPendingMigrationsRunner.RunCore()
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
One or more validation errors were detected during model generation:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'HttpPostedFileBase' has no key defined. Define the key for this EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'HttpPostedFileBases' is based on type 'HttpPostedFileBase' that has no keys defined.

我错过了什么?

最佳答案

您无法使用 Entity Framework 持久保存任意 .NET 类。

为了使 Entity Framework 能够持久化它们,类必须满足几个要求,例如错误中调用的要求(未定义键)

确实,您应该尝试仅保留原始类型(int、string 等)和您自己设计的类。

在这种情况下,正确的类型是byte[]

这意味着您需要排除模型上存在 HttpPostedFileBase 属性的情况。

相反,请考虑使用字节数组来存储数据和另一个属性,例如存储文件类型/名称的字符串

关于asp.net-mvc - 包含文件的 ASP.NET MVC 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17276953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com