将类添加到仅接受 1 个参数的方法中
本文关键字:参数 方法 添加 | 更新日期: 2023-09-27 18:36:43
我正在尝试学习 C#,遇到了一个问题,但我不确定它是什么。我正在尝试通过 Web 服务从实体框架工作调用存储过程。但是,我不断收到一个错误:
CS1501: No overload for method 'CreateUser' takes 1 arguments
我的sql数据表只是一个基本表(在其他情况下工作正常)。我已将存储过程(创建用户)放入我的实体数据模型中。然后,我创建了一个没有返回值的函数(创建用户)。
这是我的Web服务中的函数.cs我正在尝试传递该函数,我得到了上述错误:
public void AddUser(string Name, int Contact, string Email, string Password, bool Admin, string ImageURL)
{
UsersEntities entdb = new UsersEntities();
NewUser newuser = new NewUser {
Name = Name,
ContactNo = Contact,
Email = Email,
Password = Password,
Admin = Admin,
ImageURL = ImageURL};
entdb.CreateUser(newuser);
}
由于以前的错误,我还创建了一个类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class NewUser
{
public string Name { get; set; }
public int ContactNo { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public bool Admin { get; set; }
public string ImageURL { get; set; }
}
并从普通页面调用 Web 服务(我只是想测试它,所以我没有输入任何其他值):
protected void AddBtn_Click(object sender, EventArgs e)
{
CustomWebService cws = new CustomWebService();
cws.AddUser("testName", 12345678, "testEmail", "testPassword", true, "testImage");
}
如果有人能帮忙,将不胜感激!
提前感谢!
已编辑:添加创建用户功能:
#region Function Imports
/// <summary>
/// No Metadata Documentation available.
/// </summary>
/// <param name="name">No Metadata Documentation available.</param>
/// <param name="contactNo">No Metadata Documentation available.</param>
/// <param name="email">No Metadata Documentation available.</param>
/// <param name="password">No Metadata Documentation available.</param>
/// <param name="admin">No Metadata Documentation available.</param>
/// <param name="imageURL">No Metadata Documentation available.</param>
public int CreateUser(global::System.String name, Nullable<global::System.Int32> contactNo, global::System.String email, global::System.String password, Nullable<global::System.Boolean> admin, global::System.String imageURL)
{
ObjectParameter nameParameter;
if (name != null)
{
nameParameter = new ObjectParameter("Name", name);
}
else
{
nameParameter = new ObjectParameter("Name", typeof(global::System.String));
}
ObjectParameter contactNoParameter;
if (contactNo.HasValue)
{
contactNoParameter = new ObjectParameter("ContactNo", contactNo);
}
else
{
contactNoParameter = new ObjectParameter("ContactNo", typeof(global::System.Int32));
}
ObjectParameter emailParameter;
if (email != null)
{
emailParameter = new ObjectParameter("Email", email);
}
else
{
emailParameter = new ObjectParameter("Email", typeof(global::System.String));
}
ObjectParameter passwordParameter;
if (password != null)
{
passwordParameter = new ObjectParameter("Password", password);
}
else
{
passwordParameter = new ObjectParameter("Password", typeof(global::System.String));
}
ObjectParameter adminParameter;
if (admin.HasValue)
{
adminParameter = new ObjectParameter("Admin", admin);
}
else
{
adminParameter = new ObjectParameter("Admin", typeof(global::System.Boolean));
}
ObjectParameter imageURLParameter;
if (imageURL != null)
{
imageURLParameter = new ObjectParameter("ImageURL", imageURL);
}
else
{
imageURLParameter = new ObjectParameter("ImageURL", typeof(global::System.String));
}
return base.ExecuteFunction("CreateUser", nameParameter, contactNoParameter, emailParameter, passwordParameter, adminParameter, imageURLParameter);
}
您的 CreateUser 方法采用 6 个参数(姓名、联系人号码、电子邮件、密码、管理员、ImageUrl),但您传入用户,这是一个参数。您需要这样做:
NewUser newuser = new NewUser {
Name = Name,
ContactNo = Contact,
Email = Email,
Password = Password,
Admin = Admin,
ImageURL = ImageURL};
entdb.CreateUser(newuser.Name, newuser.ContactNo, newuser.Email, newuser.Password, newuser.Admin, newuser.ImageURL);
或
将方法修改为仅采用 NewUser 参数,并在方法主体中使用属性。