用户注册时如何将数据保存到数据库中,即如何记住他在数据库中注册的数据?(给出错误)



User.cs:此类中出现以下错误:严重性代码描述项目文件行禁止显示>状态错误CS0119"User"是一种类型,在给定的上下文TestBlazor C:\中无效。。。在那里,我试图在用户注册时保存数据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using TestBlazor.Models;
namespace TestBlazor.Data
{
public class Users
{
public static void AddUsers()
{
using (var context = new AppDbContext())
{
//var user = new User { Url = "" }; //what this?
context.User.Add(User); //this error
context.SaveChanges();
}
}
}
}

在这里,我将模型链接到数据库。我得到的表(用户(是空的。AppDbContext.cs:

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using TestBlazor.Models;
namespace TestBlazor.Data
{
public class AppDbContext : DbContext
{
public AppDbContext()
{
}
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=testblazor;Integrated Security=True;");
}
}
//protected override void OnModelCreating(ModelBuilder modelBuilder)
//{
//    base.OnModelCreating(modelBuilder);
//    modelBuilder.Entity<User>()
//}
public DbSet<User> User { get; set; }
public DbSet<Item> Items { get; set; }

}
}

这是模型(用户(:用户.cs

[Table("Users")]
public class User
{
[Display(AutoGenerateField = false)]
public int UserId { get; set; }
[Display(Name = "UserName")]
[Required(ErrorMessage = "UserName is required.")]
public string UserName { get; set; }
[Display(Name = "Password")]
[Required]
[MinLength(8, ErrorMessage = "password must be atleast 8 characters")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Display(Name = "Email")]
[Required(ErrorMessage = "Email is required.")]
public string Email { get; set; }
[Display(Name = "Company")]
[StringLength(255)]
[Required(ErrorMessage = "Company is required.")]
[Remote("doesCompanyExist", "Company", HttpMethod = "POST", ErrorMessage = "Company already exists. Please enter a different company.")]
public string Company { get; set; }
public User GetRegisteredUser()
{
return new User
{
UserName = UserName,
Password = Password,
Email = Email,
Company = Company,
};
}
}

以下是注册布局:注册器剃刀:

@page "/register"
@using TestBlazor.Models
<br />
<br />
<h3><b>Register</b></h3>
<br />
<EditForm class="needs-validation" Model="@_user" OnValidSubmit="@HandleValidSubmit" OnInvalidSubmit="@HandleInvalidSubmit">
<div class="alert @StatusClass">@StatusMessage</div>
<DataAnnotationsValidator />
<ValidationSummary />
<div class="form-group">
<p><b>User name</b></p>
<input id="username" class="solid" name="username" placeholder="Your username.." @bind-value="_user.UserName" />
<ValidationMessage For="@(() => @_user.UserName)"></ValidationMessage>
</div>
<div class="form-group">
<p><b>Password</b></p>
<input type="password" class="solid" id="password" placeholder="Your password.." @bind-value="_user.Password" />
<ValidationMessage For="@(() => @_user.Password)"></ValidationMessage>
</div>
<div class="form-group">
<p><b>Email</b></p>
<input id="email" class="solid" placeholder="you@example.com" @bind-value="_user.Email" />
<ValidationMessage For="@(() => @_user.Email)"></ValidationMessage>
</div>
<div class="form-group">
<p><b>Company</b></p>
<input id="company" class="solid" placeholder="Your company.." @bind-value="_user.Company" />
<ValidationMessage For="@(() => @_user.Company)"></ValidationMessage>
</div>

<br />
<button disabled="@loading" class="btn btn-primary">
@if (loading)
{
<span class="spinner-border spinner-border-sm mr-1"></span>
<NavLink href="/login" class="btn btn-link">Register</NavLink>
}
Register
</button>
<NavLink href="/login" class="btn btn-link">Login</NavLink>
</EditForm>

@code {
private User _user = new User();
private string StatusMessage;
private string StatusClass;
private bool loading;

private void OnValidSubmit()
{
if (loading == true)
{
Console.WriteLine("You have successfully registered!");
}
else
{
loading = false;
Console.WriteLine("Check your information again!");
}
}
protected void HandleValidSubmit()
{
StatusClass = "alert-info";
StatusMessage = " You have successfully registered! Please click the Login button to log in!";
}
protected void HandleInvalidSubmit()
{
StatusClass = "alert-danger";
StatusMessage = " Check your information again!";
}

public bool doesCompanyExist(string Company)
{
try
{
if (Company != null)
{
return true;
}
}
catch (Exception)
{
return false;
}
return false;
}
}

我认为您的问题是试图通过实体框架将User(一个类(添加到User表中。您应该取消对此行//var user = new User { Url = "" }; //what this?的注释,并通过将user传递到此行context.User.Add(User);中来修改此行。所以,它可能看起来是这样的。

using (var context = new AppDbContext())
{
var user = new User { Url = "" };
context.User.Add(user);
context.SaveChanges();
}

我甚至没有看你所有的其他代码。

edit:我不认为UrlUser的属性,所以我不知道你为什么要用Url初始化一个新的User。但是,假设您正确初始化了User的实例(我指的是代码var user = new User { ... };的行(,您应该能够使用.Add()方法通过EF.将其添加到User表中

最新更新