C# 是否有方法检查通用映射实体是否有效以插入或更新。环境足迹6

C# 是否有方法检查通用映射实体是否有效以插入或更新。环境足迹6,c#,excel,entity-framework,generics,C#,Excel,Entity Framework,Generics,我正在从excel文件加载实体数据,我需要在从excel行创建实体后验证实体,但我有多个功能提供了通过excel文件插入或更新的选项,因此我想创建一些通用的功能,如ModelState.IsValid 实体框架是否有类似的功能?我通过验证viewModel解决了这个问题: public ActionResult Insert(string data1, DateTime data2, int data3, bool data4) { Model model = new Model(d

我正在从excel文件加载实体数据,我需要在从excel行创建实体后验证实体,但我有多个功能提供了通过excel文件插入或更新的选项,因此我想创建一些通用的功能,如ModelState.IsValid


实体框架是否有类似的功能?

我通过验证viewModel解决了这个问题:

public ActionResult Insert(string data1, DateTime data2, int data3, bool 
 data4)
{
    Model model = new Model(data1, data2, data3, data4);

    ModelState.Clear(); 
    TryValidateModel(model);    
    LoadErrors();
}
所有错误都加载到ModelState中,然后我读取它:

private string[] LoadErrors()
{
    var errorList = ModelState
                 .Where(x => x.Value.Errors.Count > 0)
                 .ToDictionary(
                     kvp => kvp.Key,
                     kvp => kvp.Value.Errors.Select(e => 
                     e.ErrorMessage).ToArray()
                 );
    return errorList;
}

我通过验证viewModel解决了这个问题:

public ActionResult Insert(string data1, DateTime data2, int data3, bool 
 data4)
{
    Model model = new Model(data1, data2, data3, data4);

    ModelState.Clear(); 
    TryValidateModel(model);    
    LoadErrors();
}
所有错误都加载到ModelState中,然后我读取它:

private string[] LoadErrors()
{
    var errorList = ModelState
                 .Where(x => x.Value.Errors.Count > 0)
                 .ToDictionary(
                     kvp => kvp.Key,
                     kvp => kvp.Value.Errors.Select(e => 
                     e.ErrorMessage).ToArray()
                 );
    return errorList;
}

这种验证需要什么?你能在你的模型上使用数据注释吗?Excel中的每一行是单个实体还是分解为多个实体?默认情况下,EF会在保存更改之前验证实体。每一行都是一个实体,我想在发送到insert之前进行检查。我想我将创建模型而不是实体,而不是使用TryValidateModel,如果它有效,我将创建实体并插入或更新。@GertArnold很高兴知道这个方法存在,我想在不在DAO层、不附加实体的情况下执行它,但我已经解决了,通过以下方式创建和验证viewmodel:ModelState.Clear();TryValidateModel(model),所有错误都加载到ModelState中,然后我读取它。这个验证需要什么?你能在你的模型上使用数据注释吗?Excel中的每一行是单个实体还是分解为多个实体?默认情况下,EF会在保存更改之前验证实体。每一行都是一个实体,我想在发送到insert之前进行检查。我想我将创建模型而不是实体,而不是使用TryValidateModel,如果它有效,我将创建实体并插入或更新。@GertArnold很高兴知道这个方法存在,我想在不在DAO层、不附加实体的情况下执行它,但我已经解决了,通过以下方式创建和验证viewmodel:ModelState.Clear();TryValidateModel(model),所有错误都加载到ModelState中,然后我读取它。