Q&A сесия с курсистите от сезон 7


25

Здравейте,

По желание на курсистите от сезон 7 ще организираме Q&A сесия, на която да изговорим възможно най-много от темите, които ви вълнуват. За целта съм направил един event тук и всеки може да напише своя въпрос, като ще спомена, че това което най-често се върти като теми напоследък е Dependency Inversion, MVP pattern и интервюта, но ви насърчавам да напишете всякакви други неща, които искате да бъдат разискани, за да можем да си бъдем максимално полезни.

Към момента вариант за дата и час на провеждане е 04.02.2017 (следващата събота) в зала Enterprise от 11:00, като може да претърпи промяна ако се измисли друг по-удобен вариант.

Поздрави,

Виктор

П.С. Сесията ще бъде записана, въпреки че подозирам, че някои неща няма да са за пред камера :) Just saying.




Отговори



2

Здравейте,

Видеото от събота е обработено и може да се намери тук. В описанието може да намерите отделни подбрани моменти и материали, които са споменати по време на сесията.

Поздрави,

Виктор


от ViktorTsvetkov (1551 точки)


3

Допълнителен коментар към въпрос:

-------------------------------------------
Anonymous 31/01/2017


Code first vs. Database first. DB first Best Practice? auto-gen:Comment my:IComment my:CommentMetaData:IComment ([Required], [Max...]) my:Comment:IComment
-------------------------------------------

Поради невъзможност да напиша достатъчно символи в анкетата, добавям тук допълнително описание и пример към въпросът ми. А именно, ако ползваме Database first подход, какви са Best Practice, така че да имаме интерфейси и server side валидации. Кодът по-долу е най-добрият пример, който намерих. 

Примерно, имаме модел коментар (Comment).
Моделът, които получаваме, auto-generated от базата данни е:           

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace MyAssemblyName.Data.Models
{
    using System;
    using System.Collections.Generic;

    public partial class Comment
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Comment()
        {
            this.Trainings = new HashSet<Training>();
        }

        public int Id { get; set; }
        public string Title { get; set; }
        public string Body { get; set; }
        public string UserName { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Training> Trainings { get; set; }
    }
}

За да можем допълнително да добавим интерфейс и валидации, създаваме следните неща:

------------------------------------------------------------
using System.Collections.Generic;

namespace MyAssemblyName.Data.Models.Contracts
{
    public interface IComment
    {
        string Body { get; set; }

        string Title { get; set; }

        string UserName { get; set; }

        ICollection<Training> Trainings { get; set; }        
    }
}

------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

using MyAssemblyName.Data.Models.Contracts;

namespace MyAssemblyName.Data.Models
{
    public class CommentMetaData : IComment
    {
        [Required]
        [MaxLength(500, ErrorMessage = "Body length must be less than 500 characters long.")]
        public string Body { get; set; }

        public string Title { get; set; }

        public ICollection<Training> Trainings { get; set; }

        [Required]
        [MaxLength(50, ErrorMessage = "Username length must be less than 50 characters long.")]
        public string UserName { get; set; }
    }
}


------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;

using MyAssemblyName.Data.Models.Contracts;

namespace MyAssemblyName.Data.Models
{
    [MetadataType(typeof(CommentMetaData))]
    public partial class Comment : IComment
    {
    }
}












от persssi (239 точки)


3
Здравейте,
Понеже се мина почти една седмица, а нищо не е качвано, та ще има ли видео от сесията?

от DanielNikolov (359 точки)


2

Здрасти,

Както писах по-горе, видеото може да бъде намерено тук.

Поздрави,

Виктор


от ViktorTsvetkov (1551 точки)

0
Супер! Благодаря! :)

от DanielNikolov (359 точки)