I've created a new CRT and Retail server dll in following piece of codes. and the retail proxy is generated, but the following error is always encountered. I cannot find out resolution. Who can help me to resolve this problem. Thanks!
Here is an error:
Here is EdmModelExtender:
[Export(typeof(IEdmModelExtender))]
[ComVisible(false)]
public class EdmModelExtender : IEdmModelExtender
{
/// <summary>
/// Extends the EDM model.
/// </summary>
/// <param name="builder">The builder to build the EDM model.</param>
public void ExtendModel(CommerceModelBuilder builder)
{
ThrowIf.Null(builder, "builder");
// Extends entity sets.
builder.BuildEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");
// Extends entity set actions.
var action = builder.BindEntityAction<SampleDataModel.RemoveSuspendTransEntity>("RemoveAllSuspendTrans");
action.Parameter<SampleDataModel.RemoveSuspendTransEntity>("removeSuspendTransEntity");
action.ReturnsFromEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");
}
}
Here is CustomizedEdmModelFactory:
[Export(typeof(IEdmModelFactory))]
[ComVisible(false)]
public class CustomizedEdmModelFactory : CommerceModelFactory
{
/// <summary>
/// Builds entity sets.
/// </summary>
protected override void BuildActions()
{
base.BuildActions();
var action = CommerceModelFactory.BindEntityAction<SampleDataModel.RemoveSuspendTransEntity>("RemoveAllSuspendTrans");
action.Parameter<SampleDataModel.RemoveSuspendTransEntity>("removeSuspendTransEntity");
action.ReturnsFromEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");
}
/// <summary>
/// Builds entity sets.
/// </summary>
protected override void BuildEntitySets()
{
base.BuildEntitySets();
CommerceModelFactory.BuildEntitySet<SampleDataModel.RemoveSuspendTransEntity>("RemoveSuspendTransEntities");
}
}
Here is CRT:
public class RemoveSuspendTransEntity : CommerceEntity
{
private const string StoreIdColumn = "STORENUMBER";
private const string TerminalIdColumn = "TERMINALNUMBER";
/// <summary>
/// Initializes a new instance of the <see cref="RemoveSuspendTransEntity"/> class.
/// </summary>
public RemoveSuspendTransEntity()
: base("RemoveSuspendTransEntity")
{
}
/// <summary>
/// Gets or sets the store identifier where this transaction was created.
/// </summary>
[DataMember]
[Column(StoreIdColumn)]
public string StoreId
{
get { return (string)this[StoreIdColumn]; }
set { this[StoreIdColumn] = value; }
}
/// <summary>
/// Gets or sets the terminal identifier where this transaction was created or resumed.
/// </summary>
[Key]
[DataMember]
[Column(TerminalIdColumn)]
public string Id
{
get { return (string)this[TerminalIdColumn]; }
set { this[TerminalIdColumn] = value; }
}
}
[DataContract]
public sealed class RemoveSuspendTransDataRequest : Request
{
/// <summary>
/// Initializes a new instance of the <see cref="RemoveSuspendTransDataRequest"/> class.
/// </summary>
/// <param name="storeNumber">The store number.</param>
public RemoveSuspendTransDataRequest(RemoveSuspendTransEntity removeSuspendTransEntity)
{
this.RemoveSuspendTransEntity = removeSuspendTransEntity;
}
/// <summary>
/// Gets the store number related to the request.
/// </summary>
[DataMember]
public RemoveSuspendTransEntity RemoveSuspendTransEntity { get; private set; }
}
[DataContract]
public sealed class RemoveSuspendTransDataResponse : Response
{
/// <summary>
/// Initializes a new instance of the <see cref="RemoveSuspendTransDataResponse"/> class.
/// </summary>
/// <param name="dayHours">The collection of store hours.</param>
public RemoveSuspendTransDataResponse(RemoveSuspendTransEntity removeSuspendTransEntity)
{
this.RemoveSuspendTransEntity = removeSuspendTransEntity;
}
/// <summary>
/// Gets the store day hours.
/// </summary>
[DataMember]
public RemoveSuspendTransEntity RemoveSuspendTransEntity { get; private set; }
}
public class RemoveSuspendTransDataService : IRequestHandler
{
/// <summary>
/// Gets the collection of supported request types by this handler.
/// </summary>
public IEnumerable<Type> SupportedRequestTypes
{
get
{
return new[]
{
typeof(RemoveSuspendTransDataRequest)
};
}
}
/// <summary>
/// Entry point to RemoveSuspendTranssDataService service.
/// </summary>
/// <param name="request">The request to execute.</param>
/// <returns>Result of executing request, or null object for void operations.</returns>
public Response Execute(Request request)
{
if (request == null)
{
throw new ArgumentNullException("RemoveSuspendTransDataRequest request null");
}
Type reqType = request.GetType();
if (reqType == typeof(RemoveSuspendTransDataRequest))
{
return this.RemoveSuspendTrans((RemoveSuspendTransDataRequest)request);
}
else
{
string message = string.Format(CultureInfo.InvariantCulture, "RemoveSuspendTransDataRequest Request '{0}' is not supported.", reqType);
RetailLogger.Log.GenericWarningEvent(message);
throw new NotSupportedException(message);
}
}
private RemoveSuspendTransDataResponse RemoveSuspendTrans(RemoveSuspendTransDataRequest request)
{
ThrowIf.Null(request, "request");
return new RemoveSuspendTransDataResponse(new DataModel.RemoveSuspendTransEntity { Id="Test", StoreId="all" });
}
Here is RetailProxy code( auto-generate)
// Operations
/// <summary>
/// RemoveAllSuspendTrans method.
/// </summary>
/// <param name="id">The id.</param>
/// <param name="removeSuspendTransEntity">The removeSuspendTransEntity.</param>
/// <returns>RemoveSuspendTransEntity object.</returns>
public async Task<RemoveSuspendTransEntity> RemoveAllSuspendTrans(string id, Contoso.Commerce.Runtime.DataModel.RemoveSuspendTransEntity removeSuspendTransEntity)
{
return await this.context.ExecuteOperationSingleResultAsync<RemoveSuspendTransEntity>(
"RemoveSuspendTransEntities",
"RemoveSuspendTransEntity",
"RemoveAllSuspendTrans",
true, null, OperationParameter.Create("Id", id, true),
OperationParameter.Create("removeSuspendTransEntity", removeSuspendTransEntity, false));
}