3

我有一个 ASP.NET MVC 项目,我想先使用 Entity Framework 6 代码。在 Entity Framework 6 中,我们可以使用存储过程并映射到它们。我使用这段代码来映射它,但是当我想创建我的数据库时,我得到了这个错误:

一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。

但是当我清理所有存储过程映射时,它会创建我的数据库。

我必须在我的程序中使用存储过程,因此我必须知道如何通过 EF 6 代码优先映射和使用存储过程?我的代码有什么问题,在映射存储过程时如何调用它们?

using System.Data.Entity;

namespace Raja.Models.Context
{
    public class RajaContext : DbContext
    {
        public RajaContext() : base("name=RajaContext")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            #region SpareParts
            modelBuilder.Entity<Spareparts>()
                        .MapToStoredProcedures(s => s.Update(u => u.HasName("Spareparts_Update").Parameter(P => P.Code, "Code")
               .Parameter(P => P.SparepartName, "SparepartName")
               .Parameter(P => P.Serial, "Serial")
               .Parameter(P => P.ProjectNumber, "ProjectNumber")
               .Parameter(P => P.SparePartType, "SparePartType")
               .Parameter(P => P.Emplacement, "Emplacement")
               //.Parameter(P => P.TakingPlace.TrainID, "TakingPlace")
               .Parameter(P => P.AssemblyTime, "AssemblyTime")
               .Parameter(P => P.ConsumptionFactor, "ConsumptionFactor")
               .Parameter(P => P.Warranty, "Warranty")
               .Parameter(P => P.Qty, "Qty")
               .Parameter(P => P.Cost, "Cost")
               .Parameter(P => P.HasRepair, "HasRepair")
               .Parameter(P => P.Enable, "Enable")
               .Parameter(P => P.Picture, "Picture")
               .Parameter(P => P.Description, "Description")
               .Parameter(P => P.CreatedDate, "CreatedDate")
               .Parameter(P => P.CreateByUser, "CreateByUser")
               .Parameter(P => P.LastModificationDate, "LastModificationDate")
               .Parameter(P => P.LastModifyByUser, "LastModifyByUser")
               .Parameter(P => P.PlaceOfSupply, "PlaceOfSupply"))
                                                     .Delete(d => d.HasName("Spareparts_Delete").Parameter(p => p.SparepartId, "SparepartId"))
                                                     .Insert(i => i.HasName("Spareparts_Insert").Parameter(P => P.SparepartName, "SparepartName")
               .Parameter(P => P.Code, "Code")
               .Parameter(P => P.Serial, "Serial")
               .Parameter(P => P.ProjectNumber, "ProjectNumber")
               .Parameter(P => P.SparePartType, "SparePartType")
               .Parameter(P => P.Emplacement, "Emplacement")
               //.Parameter(P => P.TakingPlace.TrainID, "TakingPlace")
               .Parameter(P => P.AssemblyTime, "AssemblyTime")
               .Parameter(P => P.ConsumptionFactor, "ConsumptionFactor")
               .Parameter(P => P.Warranty, "Warranty")
               .Parameter(P => P.Qty, "Qty")
               .Parameter(P => P.Cost, "Cost")
               .Parameter(P => P.HasRepair, "HasRepair")
               .Parameter(P => P.Enable, "Enable")
               .Parameter(P => P.Picture, "Picture")
               .Parameter(P => P.Description, "Description")
               .Parameter(P => P.CreatedDate, "CreatedDate")
               .Parameter(P => P.CreateByUser, "CreateByUser")
               .Parameter(P => P.LastModificationDate, "LastModificationDate")
               .Parameter(P => P.LastModifyByUser, "LastModifyByUser")
               .Parameter(P => P.PlaceOfSupply, "PlaceOfSupply")));
            #endregion
        }

        public DbSet<Spareparts> Spareparts { get; set; }
    }
}
4

0 回答 0