2017-10-27 1 views
-1

私のコードベースのエンティティフレームワークオブジェクトにExcelファイルをアップロードしています。エラーが発生しました!['System.Data.Entity.ModelConfiguration.ModelValidationException'がEntityFramework.dllButの がユーザコード にありませんでした:https://i.imgur.com/K6jJ0tX.pngが発生しました。 は、誰もが私にそれを解決する方法のアイデアを与えることができ 以下はエンティティモデルの主キーフィールド内のコントローラモデル設定エラー

public ActionResult Index(HttpPostedFileBase uploadfile) 
    { 
     //List<dataextract> lstStudent = new List<dataextract>(); 
     if (ModelState.IsValid) 
     { 
      if (uploadfile != null && uploadfile.ContentLength > 0) 
      { 
       //ExcelDataReader works on binary excel file 
       Stream stream = uploadfile.InputStream; 
       //We need to written the Interface. 
       IExcelDataReader reader = null; 
       if (uploadfile.FileName.EndsWith(".xls")) 
       { 
        //reads the excel file with .xls extension 
        reader = ExcelReaderFactory.CreateBinaryReader(stream); 
       } 
       else if (uploadfile.FileName.EndsWith(".xlsx")) 
       { 
        //reads excel file with .xlsx extension 
        reader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
       } 
       else 
       { 
        //Shows error if uploaded file is not Excel file 
        ModelState.AddModelError("File", "This file format is not supported"); 
        return View(); 
       }    


       var conf = new ExcelDataSetConfiguration 
       { 
        ConfigureDataTable = _ => new ExcelDataTableConfiguration 
        { 
         UseHeaderRow = true 
        } 
       }; 

       DataSet result = reader.AsDataSet(conf); 
       DataTable s1 = result.Tables[0]; 

       reader.Close();     


       using (ReadContext db = new ReadContext()) 
       {var query = from s in s1.AsEnumerable() 

           select new 
           { 

            CODE = s.Field<Double>("CODE").ToString(), 
            Name = s.Field<string>("Name").ToString(), 
            Group = s.Field<string>("Group").ToString() 
           }; 
        var q1 = query.Select(x => new dataextract 
        { 

         CODE = x.CODE, 
         Name = x.Name, 
         Group = x.Group, 
        }).ToList(); 

        foreach (var ss in q1) 
        { 

          db.dataext.Add(ss);//error happening at this line 
        } 
        db.SaveChanges(); 

       } 

       return View(s1); 
      } 
     } 
     else 
     { 
      ModelState.AddModelError("File","Please upload your file"); 
     } 
     return View(); 
    } 

答えて

0

でのDataContext

public class ReadContext : DbContext 
{ 
    public ReadContext() 
     : base("name = ExcelConnection") 
    { 
     Database.SetInitializer(new 
      MigrateDatabaseToLatestVersion<ReadContext,  
       ReadAndDisplayExcel.Migrations.Configuration>()); 
    } 
    public DbSet<dataextract> dataext { get; set; } 

} 

でクラスファイル

public class dataextract 
{ 
public string Code { get; set; } 
public string Name1 { get; set; } 
public string Group1 { get; set; } 
} 

ための私のコードですそこに新しいフィールドを作成しないでください

public class dataextract 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int dataextractId { get; set; } 
    public string Code { get; set; } 
    public string Name1 { get; set; } 
    public string Group1 { get; set; } 
} 

たり、実体は

public class dataextract 
{ 
    [Key] 
    public string Code { get; set; } 
    public string Name1 { get; set; } 
    public string Group1 { get; set; } 
} 
を提出したとして、コードフィールドを選択してください