【问题标题】:Can't add row in Database using WCF Service无法使用 WCF 服务在数据库中添加行
【发布时间】:2013-07-09 01:44:40
【问题描述】:

谁能帮我解决这个问题:

我有一个使用实体框架构建的数据库。在我的简单项目中,我要做的就是在数据库中添加一个新行,仅此而已。

我有一个数据库类,名为 UserDB

public class UserDB : DbContext
{
    public UserDB()
        : base("UserDB")
    {

    }

    public List<User> Users { get; set; }
}

和用户的类

[Table(Name="User")]
public class User
{
    [Key]
    public String Name { get; set; }
}

我正在尝试使用另一个控制台应用程序在数据库中添加新数据,但是每次我调用方法 insertInformation(string name) 时,它都会说 UsersDB 中的用户列表为空,并且无法添加数据库中的新用户。我在其他 ASP.NET 应用程序中使用了相同的方法,并且一切正常。如果有人知道如何解决这个问题,请帮助

我正在使用的服务:

public class Service1 : IService1
{

    /// <summary>
    /// Method for adding new User in Database
    /// </summary>
    /// <param name="name"></param>
    public void insertData(string name)
    {
        UserDB db = new UserDB();
        User user = new User
        {
            Name = name
        };
        //if (db.Users == null)
        //{
        //    db.Users = new List<User>();
        //    db.Users.Add(user);
        //}
        //else
        //    db.Users.Add(user);

        db.Users.Add(user);
        db.SaveChanges();
    }

【问题讨论】:

  • 哪里失败了?在控制台应用程序中还是在 WCF 中?

标签: c# wcf entity-framework


【解决方案1】:

也许您应该尝试使用以下代码:

代替:

List<User> Users { get; set; }

试试吧:

DbSet<User> Users { get; set; }

我总是在我的 DBContext 中使用 DbSet 或 IDbSet,它总是有效的。

【讨论】:

    【解决方案2】:

    使用这个

    db.Users.InsertAllOnSubmit(user);
    db.SubmitChanges();
    

    代替

     db.Users.Add(user);
     db.SaveChanges();
    

    【讨论】:

      【解决方案3】:

      试试这个

      db.AddObject("User", user);
      db.SaveChanges();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-08
        • 1970-01-01
        • 1970-01-01
        • 2013-09-24
        • 2015-09-09
        • 2013-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多