本人新手,可能表述不太清楚,请大家原谅:现在模型有:public class CompanyInfo
{
[Key]
[Column("id")]
public int id { get; set; } public virtual List<CompanyInfoActHistory> CompanyInfoActHistorys { get; set; } //客户流水记录表
//省略部分字段……
}以及: public class CompanyInfoActHistory
{
[Key]
public int id { get; set; } [Column("CompanyId")]
public int CompanyInfoId { get; set; } [Column("Actdate")]
public DateTime Actdate { get; set; } [Column("UserId")]
public int OperatorId { get; set; } [Column("ip")]
public string IP { get; set; } [Column("Content")]
public string Content { get; set; } public virtual CompanyInfo companyInfo { get; set; } public virtual Operator Operator { get; set; }
}
个人想在创建公司记录的同时,创建日志流水,记录在表CompanyInfoActHistory中
在Create方法中按如下方法写,可是写不进去。[HttpPost]
public ActionResult Create(CompanyInfo companyInfo)
{
if (ModelState.IsValid)
{
CompanyInfoActHistory actHistory = new CompanyInfoActHistory()
{
Actdate = System.DateTime.Now,
OperatorId = Convert.ToInt32(System.Web.HttpContext.Current.Request.Cookies["POM"]["Adminid"]),
IP = System.Web.HttpContext.Current.Request.UserHostAddress == null ? "" : System.Web.HttpContext.Current.Request.UserHostAddress,
Content = this.SetContent()
};
companyInfo.CompanyInfoActHistorys.Add(actHistory); db.CompanyInfo.Add(companyInfo);
db.SaveChanges();
return Content("成功新建记录", "text/html");
}
return Content("未成功新建记录", "text/html");
}求解释
{
[Key]
[Column("id")]
public int id { get; set; } public virtual List<CompanyInfoActHistory> CompanyInfoActHistorys { get; set; } //客户流水记录表
//省略部分字段……
}以及: public class CompanyInfoActHistory
{
[Key]
public int id { get; set; } [Column("CompanyId")]
public int CompanyInfoId { get; set; } [Column("Actdate")]
public DateTime Actdate { get; set; } [Column("UserId")]
public int OperatorId { get; set; } [Column("ip")]
public string IP { get; set; } [Column("Content")]
public string Content { get; set; } public virtual CompanyInfo companyInfo { get; set; } public virtual Operator Operator { get; set; }
}
个人想在创建公司记录的同时,创建日志流水,记录在表CompanyInfoActHistory中
在Create方法中按如下方法写,可是写不进去。[HttpPost]
public ActionResult Create(CompanyInfo companyInfo)
{
if (ModelState.IsValid)
{
CompanyInfoActHistory actHistory = new CompanyInfoActHistory()
{
Actdate = System.DateTime.Now,
OperatorId = Convert.ToInt32(System.Web.HttpContext.Current.Request.Cookies["POM"]["Adminid"]),
IP = System.Web.HttpContext.Current.Request.UserHostAddress == null ? "" : System.Web.HttpContext.Current.Request.UserHostAddress,
Content = this.SetContent()
};
companyInfo.CompanyInfoActHistorys.Add(actHistory); db.CompanyInfo.Add(companyInfo);
db.SaveChanges();
return Content("成功新建记录", "text/html");
}
return Content("未成功新建记录", "text/html");
}求解释
解决方案 »
- 用Response.WriteFile输出的图片默认是缩小显示,怎么解决
- gridview中能够实现单击HyperLinkField按钮后,根据情况判断是否跳转?
- 在线等,一段关于javascript+asp.net的代码
- server2000写权限的问题,谢谢
- 如何在datalist中嵌入iframe控件
- 在Word表格中如何做到连续选择单元格...
- 如何提供速度
- RSA加密的数据,是字节数组型,怎么对这个加密数据进行保存呢?
- 各路高手,帮我看看我的DataSet怎么不能用啊
- 如何作EXCEL报表?
- dropdownlist无刷新传值问题,请指教!
- Entity Framework 的导航属性怎么序列化?
db.CompanyInfo.Add(companyInfo);
db.SaveChanges();
然而,这只是对公司记录创建的更新,并没有记录到日志其实,你应该建一个公用的添加日志流水方法,放在BaseControl中,然后其他页面可以继承这个控制器比如添加日志的方法为
protected void AddLog(CompanyInfoActHistory model)
{
/*这里假设日志表为Log
* db.Log.Add(model);
db.SaveChanges();//将日志添加入库
*/
}然后调用db.CompanyInfo.Add(companyInfo);
db.SaveChanges();
AddLog(actHistory );
尝试了一下你的建议,但问题没有解决。在我原来的代码中
companyInfo.CompanyInfoActHistorys.Add(actHistory);我觉得是这句出了问题,但问题不知道出在哪里。其实我CompanyInfo对象下还有Department对象,在Create的时候,创建是成功的,这个成功是因为在前台View页面中有 Edit for CompanyInfo.Department[0] 从而使得Department也创建成功,并且自动将Department 中的CompanyId这个属性和CompanyInfo中的id属性关联。而前台页面没有CompanyInfoActHistorys 的 Edit for 代码,所以想通过后台controller中添加这样一个对象,并且使它的CompanyInfoId 自动关联同时创建的CompanyInfo对象。原因是机制还不了解,学习的路还长,望高手指点,非常感谢!
非常感谢你的回答。
其中有一个问题比较麻烦,就是每一个日志列表会关联到创建的那个对象。
比如创建了一个CompanyInfo对象,日志的一个属性要关联这个CompanyInfo 的Id值,
如果这样,必须另外再用方法去获取数据库中的Id字段(尤其是在对象创建的时候),再写入,感觉代码不是很清爽。