Błąd podczas insertowania danych do bazy.

0

Witam

Wyskakuje mi taki błąd "The best overloaded method match for 'System.Data.Entity.DbSet<ComboBox.Models.AssignLog>.Add(ComboBox.Models.AssignLog)' has some invalid arguments.."

podczas context.AssignLog.Add(fm); // insert data to db

Tak wygląda pobieżnie mój kod:

  public class MyController : Controller
    {
        private masterEntities db = new masterEntities();
     
        public ActionResult Index()
        {
            ViewBag.IdPeople= new SelectList(db.People, "IdPeople", "NamePeople");
            ViewBag.IdChild = new SelectList(db.Child, "IdChild", "NameChild"); // binding data to ComboBox 
            return View();
        }

        protected override void Dispose(bool disposing)
        {
            db.Dispose(); // close connection with database 
            base.Dispose(disposing);
        }

        public class MyFamily// logs of merged and time of insert
        {
            public int IdPeople { get; set; }
            public int IdChild { get; set; }

            public DateTime Time { get; set; }
        }

        [HttpPost]
        [ValidateAntiForgeryToken] 
        public ActionResult Index(MyFamily fm) // merge 
        {

            using (masterEntities context = new masterEntities())
            {
                AssignLog peopleChild = new AssignLog(); // class of logs
                ViewBag.IdPeople = new SelectList(db.People, "IdPeople", "NamePeople", tr.IdPeople); 
                ViewBag.IdChild = new SelectList(db.Child, "IdChild", "NameChild", tr.IdChild);
               // tr.Time = DateTime.Now;

                if (ModelState.IsValid) 
                { 
                    peopleChild.IdChild = tr.IdChild;
                    peopleChild.IdPeople = tr.IdPeople
                    peopleChild.Time = DateTime.Now;

                  __  context.AssignLog.Add(fm); // ERROR HERE
                    context.SaveChanges();
                    ModelState.Clear();
                    fm = null;
                  
                    ViewBag.Message = "Dodales rekord";
                }
                else
                {
                    ViewBag.Message = "Nie dziala";
                }

             
            }
            return View(); 

        }
            

        


    }
0

obiekt "fm" jest obiektem MyFamily a chcesz go dodac jako "AssignLog". chyba zamiast fm chcesz dodac peopleChild.

0

OK. A nie da rady wrzucić MyFamily ? czym jest to spowodowane ?

0
bednarz napisał(a):

OK. A nie da rady wrzucić MyFamily ? czym jest to spowodowane ?

Pewno tym, że jest to obiekt innej klasy, a C# to nie język dynamiczny, więc nie możesz metody przyjmującej obiekt klasy A wywołać z obiektem klasy B.

0

Tak jak wspomniał @szalonyfacet

context.AssignLog.Add(peopleChild);

Teoretycznie da się cały moduł tak przerobić żeby operował tylko na jednej klasie ale jest to zła praktyka (chociażby ze względów bezpieczeństwa). Dodatkowo z obiektu MyFamily możesz prawdopodobnie wyrzucić właściwość "Time".
0

Dzięki :) tak też zrobiłem po analizie kodu :) jeśli ze względow bezpieczeństwa to nie dobre to chyba dobry powód:D

1 użytkowników online, w tym zalogowanych: 0, gości: 1