使用计算列将新行插入数据库

时间:2013-11-16 13:43:15

标签: c# asp.net-mvc

我是asp mvc的新手。我有一个问题,我两天都无法解决...... 我的数据库中有四个计算列。我想向数据库插入新行,当然只有未计算的变量。 但我收到错误,我无法更新计算列,但我不想! 我试图使用AutoMapper,但也许我使用它错了。 如何向数据库添加新行?请帮帮我。

我的模特:

namespace Aplikacja_v0.Models

public class OtwarteContext : DbContext
{
    public OtwarteContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<Otwarte> Otwarte { get; set; }
}


[Table("OtwartePozycje")]
public partial class Otwarte
{
    [Key]
    public int OtwartaPozycjaID { get; set; }
    public int UserID { get; set; }
    public string Nazwa { get; set; }
    public int Ilosc { get; set; }
    public decimal KursNabycia { get; set; }
    public int Stan { get; set; }
    public decimal KursAktualny { get; set; }
    public decimal KursZamkniecia { get; set; }
    public decimal WartoscPortfela { get; set; }

    //Computed columns
    public decimal WartoscNabycia { get; private set; }
    public decimal WartoscAktualna { get; private set; }
    public decimal ZmianaProcentowa { get; private set; }
    public decimal ZmianaKwotowa { get; private set; }
}

我的控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Otwarte otwarte)
{
    if (ModelState.IsValid)
    {
        var userIDD = WebSecurity.GetUserId(User.Identity.Name);
        OtwarteViewModel dbcontext = new OtwarteViewModel();

        dbcontext.Nazwa = otwarte.Nazwa;
        dbcontext.Ilosc = otwarte.Ilosc;
        dbcontext.KursAktualny = otwarte.KursAktualny;
        dbcontext.KursNabycia = otwarte.KursNabycia;
        dbcontext.Stan = 1;
        dbcontext.UserID = WebSecurity.GetUserId(User.Identity.Name);
        dbcontext.WartoscPortfela = 0;
        dbcontext.KursZamkniecia = 0;

        Mapper.CreateMap<OtwarteViewModel, Otwarte>();
        var mapped = Mapper.Map<OtwarteViewModel, Otwarte>(dbcontext);

        db.Otwarte.Add(mapped);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(otwarte);
}

1 个答案:

答案 0 :(得分:2)

您必须使用此属性

装饰您的列
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]