IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Maros2470
Člen
Avatar
Maros2470:26.11.2017 18:54

Zdravím.

Řeším problém jak kaskádově mazat data v databázi, vytvořené EF Code First.
Zatím to mám takto, ale databáze se nevytvoří, aplikace se sekne.
Můžete někdo poradit?
Díky.

public class Firm
    {
        public Firm()
        {

        }

        [Key]
        public long Id { get; set; }
        public string FirmName { get; set; }
        public string Ic { get; set; }
        public string Dic
        {
            get
            {
                if (LegalEntity)
                    dic = Ic;

                switch (dic.Length)
                {
                    case 10:
                        return "CZ" + Regex.Replace(dic, @"(\d{10})", "$1");
                    case 8:
                        return "CZ" + Regex.Replace(dic, @"(\d{8})", "$1");
                    default:
                        return dic;
                }
            }
            set
            {
                dic = value;
            }
        }

        public virtual ICollection<UserValue> UserValues { get; set; }

    }

public class UserValue
    {
        public UserValue()
        {

        }

        [Key]
        public long Uid { get; set;}

        protected string userValueName = "---";
        protected string userValueValue = "---";

        public long FirmId { get; set; }
        [ForeignKey("FirmId")]
        public virtual Firm Firm { get; set; }

        public string UserValueName
        {
            get
            {
                return userValueName;
            }
            set
            {
                userValueName = value;
            }
        }

        public string UserValueValue
        {
            get
            {
                return userValueValue;
            }
            set
            {
                userValueValue = value;
            }
        }
    }

public class DataModel : DbContext
    {
        public DataModel() : base("DataSource = C:\\Users\\Marek\\Documents\\Test\\Data.sdf")
        {

        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<UserValue>()
                    .HasOptional(s => s.Firm)
                    .WithMany(s => s.UserValues)
                    .HasForeignKey(o => o.FirmId)
                    .WillCascadeOnDelete(true);

            base.OnModelCreating(modelBuilder);
        }

        public DbSet<Firm> Firms { get; set; }
        public DbSet<UserValue> UserValues { get; set; }
    }
 
Odpovědět
26.11.2017 18:54
Avatar
Maros2470
Člen
Avatar
Maros2470:26.11.2017 19:04

Pokud dám modelBuilder pryč, databáze se vytvoří.

 
Nahoru Odpovědět
26.11.2017 19:04
Avatar
Maros2470
Člen
Avatar
Maros2470:26.11.2017 19:22

Tak jsem už je to vyřešeno. FirmId musí být Nullable.

public class UserValue
    {
        public UserValue()
        {

        }

        [Key]
        public long Uid { get; set;}

        protected string userValueName = "---";
        protected string userValueValue = "---";

        public long? FirmId { get; set; }
        [ForeignKey("FirmId")]
        public virtual Firm Firm { get; set; }

        public string UserValueName
        {
            get
            {
                return userValueName;
            }
            set
            {
                userValueName = value;
            }
        }

        public string UserValueValue
        {
            get
            {
                return userValueValue;
            }
            set
            {
                userValueValue = value;
            }
        }
    }
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
26.11.2017 19:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.