Я новичок в asp.net mvc entity framework. Я делаю BackOffice для управления приложениямиДобавить запись на виртуальную собственность
Вот мой класс 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();
Это добавить запись на 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 });}}
Любая помощь?
Спасибо заранее, это мне очень поможет. я просто не в полной мере понять, как виртуальная недвижимость работает право знать
ли работать первые SaveChanges? Я имею в виду, добавлена ли сущность в коллекцию FilePaths? Вы находите это в своей БД? – user449689