【问题标题】:Adding a list of objects to SQL Server - ASP.NET Web API将对象列表添加到 SQL Server - ASP.NET Web API
【发布时间】:2021-07-12 18:35:09
【问题描述】:

我正在尝试通过实体框架将对象列表添加到 SQL Server 数据库,但添加时出现错误

[HttpPost]
public void Post(List<Row> rows)
{
    try
    {
        using (DbModel dbModel = new DbModel())
        {
            foreach (var el in rows)
            {
                dbModel.Provider_Status.Add(el);
            }

            dbModel.SaveChanges();
        }
    } 
    catch { }
}

行类:

public class Row
{
    public string FileName { get; set; }
    public string FileTitle { get; set; }
    public string ProviderID { get; set; }
    public string ServiceID { get; set; }
    public string PublishDate { get; set; }
    public string ExpiryDate { get; set; }
}

数据库模型 DbModel:

    public partial class Provider_Status
    {
        public int Id { get; set; }
        public string FileName { get; set; }
        public string FileTitle { get; set; }
        public string ProviderID { get; set; }
        public string ServiceID { get; set; }
        public string PublishDate { get; set; }
        public string ExpiryDate { get; set; }
    }

错误信息:

CS1503 参数 1:无法从“File_Upload.Models.Row”转换为“File_Upload.Models.Provider_Status”

【问题讨论】:

  • 错误是什么??你的DbModel 班级是什么样的?
  • 我更新了包含 DbModel 和错误消息的帖子
  • 也许你需要一个从 Row 到 Provider_Status 的类型转换器,因为看起来你正试图将 Row 对象插入到 Provider_Status 集合中。
  • 我将参数更改为 List 行并且它有效.. 谢谢大家
  • 也看看 AddRange 而不是使用循环

标签: asp.net sql-server asp.net-mvc entity-framework asp.net-web-api


【解决方案1】:

您的 DbModel 定义了 Provider_Status 类型的数据集 - 因此,如果您想向该数据集添加数据,您需要提供 Provider_Status 对象 - 而不是 Row 对象(就像您现在所做的那样)。

您需要将这些 Row 对象转换为 Provider_Status - 尝试这样的操作:

[HttpPost]
public void Post(List<Row> rows)
{
    try
    {
        using (DbModel dbModel = new DbModel())
        {
            foreach (var el in rows)
            {
                // create a new "Provider_Status" object, based on the
                // "Row" values being passed in
                Provider_Status status = new Provider_Status
                                         {
                                            FileName    = el.FileName 
                                            FileTitle   = el.FileTitle 
                                            ProviderID  = el.ProviderID
                                            ServiceID   = el.ServiceID 
                                            PublishDate = el.PublishDate
                                            ExpiryDate  = el.ExpiryDate
                                         };

                // add that new Provider_Status object to your dbModel
                dbModel.Provider_Status.Add(status);
            }

            dbModel.SaveChanges();
        }
    } 
    catch { }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多