NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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.