Я разработчик с фоном в Ruby и Node.js, но в настоящее время работает над C# API с Entity Framework & SQL Server.Объект, унаследованный от объекта объекта, помещенного в БД с литым
У меня есть объект Fon_Campaign, но я хотел добавить некоторые методы для этого объекта, поэтому я добавил объект «Кампания», который наследуется от «Fon_Campaign», и дал этому новому объекту метод isValid()
, который отслеживает значения и отвечает, если объект прав или нет.
Мой метод API
[Route("Campaigns")]
[HttpPost]
public HttpResponseMessage CreateCampaigns([FromBody]Campaign campaign)
{
if (campaign == null)
{
ErrorMessage resp = new ErrorMessage();
resp.error = "Parameters are missing";
return Request.CreateResponse(HttpStatusCode.BadRequest, resp);
}
else if (campaign.IsValid())
{
Fon_Campaign c = campaign;
db.Fon_Campaign.Add(c); // Error: An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code, c is considering like an Campaign value and not Fon_Campaign
db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK, c);
}
else
{
ErrorMessage resp = new ErrorMessage();
// Add some explanation
resp.error = "New campaign is invalid";
return Request.CreateResponse(HttpStatusCode.BadRequest, resp);
}
}
При попытке сохранить объект в моей БД я уведомлен этот объект «кампании», и я не могу поставить его в БД, потому что я должен положить в Fon_Campaign
, поэтому актерский состав не работал.
My Model
public class Campaign : Fon_Campaign
{
public bool IsValid()
{
return true;
}
}
Надеется, что вы можете помочь, или дать мне некоторые указания на лучший способ сделать это.