繁体   English   中英

在C#MVC实体框架中从数据库onclick中删除条目

[英]Delete Entry from the database onclick in C# MVC Entity framework

我试图通过单击删除链接从数据库中删除和输入。 我也在尝试使用实体框架:

这是我的控制器中的内容:

    public ActionResult DeleteUserUserList(string UserName)
    {

        using (UsersContext db = new UsersContext())
        {
            //var username = db.UserProfile.UserName; 
            db.Entry(UserName).State = 
            System.Data.Entity.EntityState.Deleted;
            db.SaveChanges(); 
        }

        return RedirectToAction("UserList", "Account", new {UserName = 
        UserName}); 
    }

然后我的模型如下所示:

public class UsersContext : DbContext
    {
        public UsersContext()
            : base("DefaultConnection")
        {
        }

        public DbSet<UserProfile> UserProfiles { get; set; }
        public DbSet<Membership> Membership { get; set; }
        public DbSet<Role> Roles { get; set; }
    }

    [Table("UserProfile")]
    public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }
        public string Email { get; set; }
    }

这就是我的观点:

@model IEnumerable<ComtrexCloudReporting.Models.UserProfile>


@{
    ViewBag.Title = "UserList";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2 class="admin-home-link orange-titles">@Html.ActionLink("User 
 Information", "AdminIndex")</h2>
<p>&nbsp;</p>

@foreach (var item in Model)
{

    <p class=" col-sm-4 userNameUserList">@Html.DisplayFor(modelItem => 
    item.UserName) </p>
    <p class="col-sm-4 to-link"><span style="color: #f05322">|</span> <a 
    href="@string.Format("mailto:{0}", 
    item.Email)">@Html.DisplayFor(modelItem => item.Email)</a></p>
    <p class="col-sm-4 to-link"><span style="color: #f05322">|</span> <span 
    onclick="return confirm('Are you sure to delete?')"><a class="back-link" 
    href="/Account/DeleteUserUserList?UserName=@item.UserName">Delete</a> 
    </p>


    }

我收到以下错误消息:String类型不是当前上下文模型的一部分。 有人知道我在做什么错吗? 它现在就在这里中断:db.Entry(UserName).State = System.Data.Entity.EntityState.Deleted;

您没有DbSet<string> (并且您没有),因此该字符串不是数据库实体。 您需要首先找到您的UserProfile实体:

var userProfile = context.UserProfiles.FirstOrDefault(u => u.UserName == userName);

...然后删除

context.UserProfiles.Remove(userProfile);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM