我首先使用代码,可以毫无问题地添加记录.正确创建数据库并且没有任何问题地播种.但是在我的编辑操作中调用SaveChanges()只会更新实体,而不会更新任何导航或引用属性.
我的模型的简化版本:
public class Contact : IMyBaseObject
{
public Contact()
{
this.Delete = false;
this.ContactTypes = new HashSet<ContactType>();
}
public int Id {get; set;}
public string Name {get;set;}
public bool Delete {get;set;}
public virtual ICollection<ContactType> ContactTypes { get; set; }
public virtual USState USState { get; set; }
}
public class ContactType : MyBaseObject
{
public ContactType()
{
}
public int Id {get; set;}
public string Name {get;set;}
public virtual ICollection<Contact> Contacts {get;set;}
}
public abstract class Territory : MyBaseObject …Run Code Online (Sandbox Code Playgroud) 我有一种情况,T4MVC正在生成所有内容(意味着intellisense显示所有区域/控制器/操作和所有编译),但是当我运行代码时,我收到T4MVC was called incorrectly运行时错误.
我已经调查了生成的文件并发现对于我的项目中的一个控制器,只有基类中的操作才会生成重写的存根操作.对于其他控制器,正在生成所有操作.它们都具有相同的设置,如下所述.
我有一个BaseController类有一些共享代码(并继承自Controller).在Controllers目录(项目的根目录)中,我有许多控制器,所有控制器都继承自BaseController.
然后我有几个区域.在每个区域中,我有相同的控制器,每个控制器都从根Controllers目录中的同名控制器继承.
运行T4MVC(版本2.6.54),一切正常,除了一个控制器.奇怪的是,intellisense适用于控制器,但在引用实际操作时(在ActionLink()调用中)会产生阻塞.
我手动将一个操作添加到生成的代码中,没有错误.
所以我的问题是,什么会导致T4MVC 不为控制器生成所有代码?缺少的行为都是public virtual ActionResult,行动本身也很好.问题控制器在所有区域都有相同的问题.
一些缩写代码.
/Controllers/BaseController.cs
namespace MyProject.Controllers
{
public abstract partial class BaseController : Controller
{
protected ISession session;
public BaseController()
{
}
// other shared methods/actions
}
}
Run Code Online (Sandbox Code Playgroud)
/Controllers/ActivitiesController.cs(这是问题控制器)
namespace MyProject.Controllers
{
public partial class ActivitiesController : BaseController
{
// for resolving concurrency exceptions
private Activity userValues;
private Activity databaseValues;
public ActivitiesController() …Run Code Online (Sandbox Code Playgroud)