こんにちは、私は MVVM アプリケーションを作成しており、データベースをプロジェクトにリンクしています。WCF サービスをプロジェクトに追加し、サービス参照を作成して、アプリケーションからデータベースに新しいデータを追加できるようにしています。
私のアプリケーション ビューモデルには、新しいユーザーをデータベースに保存するコマンドがあり、その C# ファイル内にサービス クライアントの新しいインスタンスを作成すると、コマンドがサービス ファイル内に格納されます。ただし、サービスを使用してこのコマンドを呼び出すと、「XXX に一致する最適なオーバーロードされたメソッドには無効な引数があります」というエラーが表示されます。
これまでのビューモデルの内容を示すコードの一部を次に示します。この行の下にエラー (_serviceClient.SaveNewUser(newUser);) が表示されます。
public RelayCommand AddUserCommand { get; private set; }
private ServiceClient _serviceClient;
public AddUserViewModel()
{
_serviceClient = new ServiceClient();
AddUserCommand = new RelayCommand(() => ExecuteAddUserCommand());
}
private void ExecuteAddUserCommand()
{
User newUser = new User();
newUser.FirstName = this.FirstName;
newUser.LastName = this.LastName;
newUser.ContactNumber = this.ContactNumber;
newUser.Email = this.Email;
//service call
int userID = _serviceClient.SaveNewUser(newUser);
newUser.UserID = userID;
}
次に、service.svc.cs に次のものがあります。
[OperationContract]
public int SaveNewUser(User user)
{
using (var context = new SolutionEntities())
{
context.Users.AddObject(user);
context.SaveChanges();
return user.UserID;
}
}
User クラスは次のようになります。
public partial class Client : EntityObject
{
public static Client CreateClient(global::System.Int32 userID, global::System.String firstName, global::System.String lastName, global::System.String contactNumber)
{
User user = new User();
user .UserID = userID;
user .FirstName = firstName;
user .LastName = lastName;
user .ContactNumber = contactNumber;
return user;
}
public global::System.Int32 UserID
{
get
{
return _UserID;
}
set
{
if (_UserID!= value)
{
OnUserIDChanging(value);
ReportPropertyChanging("UserID");
_UserID= StructuralObject.SetValidValue(value, "UserID");
ReportPropertyChanged("UserID");
OnUserIDChanged();
}
}
}
private global::System.Int32 _UserID;
partial void OnUserIDChanging(global::System.Int32 value);
partial void OnUserIDChanged();
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String FirstName
{
get
{
return _FirstName;
}
set
{
OnFirstNameChanging(value);
ReportPropertyChanging("FirstName");
_FirstName = StructuralObject.SetValidValue(value, false, "FirstName");
ReportPropertyChanged("FirstName");
OnFirstNameChanged();
}
}
private global::System.String _FirstName;
partial void OnFirstNameChanging(global::System.String value);
partial void OnFirstNameChanged();
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String LastName
{
get
{
return _LastName;
}
set
{
OnLastNameChanging(value);
ReportPropertyChanging("LastName");
_LastName = StructuralObject.SetValidValue(value, false, "LastName");
ReportPropertyChanged("LastName");
OnLastNameChanged();
}
}
private global::System.String _LastName;
partial void OnLastNameChanging(global::System.String value);
partial void OnLastNameChanged();
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String ContactNumber
{
get
{
return _ContactNumber;
}
set
{
OnContactNumberChanging(value);
ReportPropertyChanging("ContactNumber");
_ContactNumber = StructuralObject.SetValidValue(value, false, "ContactNumber");
ReportPropertyChanged("ContactNumber");
OnContactNumberChanged();
}
}
private global::System.String _ContactNumber;
partial void OnContactNumberChanging(global::System.String value);
partial void OnContactNumberChanged();
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public global::System.String Email
{
get
{
return _Email;
}
set
{
OnEmailChanging(value);
ReportPropertyChanging("Email");
_Email = StructuralObject.SetValidValue(value, true, "Email");
ReportPropertyChanged("Email");
OnEmailChanged();
}
}
private global::System.String _Email;
partial void OnEmailChanging(global::System.String value);
partial void OnEmailChanged();
うまくいけば、誰かが私の問題がどこにあるかを見ることができます、ありがとう。