我是asp.net&的新手。 mvc实体框架。 我正在为管理应用程序做一个后勤工作
这是我的App类:
public class AsyApp
{
[Key]
public int AsyAppId { get; set; }
[StringLength(255)]
[Required]
[DisplayName("Nom")]
public string Name { get; set; }
[StringLength(255)]
[Required]
[RegularExpression(@"com\.[a-zA-Z0-9]+\.[a-zA-Z0-9]+", ErrorMessage = "Le Bundle n'est pas de la bonne forme (ex: com.Company.AppName)")]
public string Bundle { get; set; }
public virtual Theme Theme { get; set; }
public virtual AppIdentity AppIdentity { get; set; }
public virtual ICollection<Scene> Scenes { get; set; }
public virtual ICollection<FilePath> FilePaths { get; set; }
}
该应用附有AppIdentity:
public class AppIdentity
{
[DisplayName("Ecran d'accueil")]
public virtual FilePath Splashscreen { get; set; }
[DisplayName("Icon")]
public virtual FilePath Icon { get; set; }
[DisplayName("Logo Application")]
public virtual FilePath LogoApp { get; set; }
[DisplayName("Logo Client")]
public virtual FilePath LogoClient { get; set; }
[Key, ForeignKey("AsyApp")]
public int AsyAppId { get; set; }
public virtual AsyApp AsyApp { get; set; }
}
这是我的dbcontext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet<AsyApp> AsyApps { get; set; }
public DbSet<Theme> Themes { get; set; }
public DbSet<Scene> Scenes { get; set; }
public DbSet<AppIdentity> AppIdentities { get; set; }
public DbSet<FilePath> FilePaths { get; set; }
}
我有一个视图,我编辑应用程序的AppIdentity。 我想更新例如Splashscreen属性。
我期望的行为是当我做
时appIdentity.Splashscreen = new FilePath();
它在FilePaths dbset上添加一个条目; 将新文件路径条目的AsyAppId设置为当前的AsyApp。 但它没有用......
这是我的控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(AppIdentity appIdentity)
{
var f = new FilePath();
f.AsyAppId = appIdentity.AsyAppId;
db.FilePaths.Add(f);
db.SaveChanges();
appIdentity.Splashscreen = f;
db.SaveChanges();
return RedirectToAction("Edit", "AppIdentity", new { asyAppId = appIdentity.AsyAppId });}}
任何帮助?
提前谢谢,这对我很有帮助。 我只是不完全了解虚拟属性的工作原理
答案 0 :(得分:0)
尝试将此代码放在appIdentity.Splashscreen = f;
之后:
db.AppIdentities.Attach(appIdentity);
context.Entry(appIdentity).State = EntityState.Modified;
db.SaveChanges();