Creating models manually in MVC I am creating my models manually. I have five tables in my database as follows:


Members
MemberTypeMasters
Payments
Relationships
StatusMasters


My database looks like this:



So far I have 6 files containing auto-implemented properties as below:




Models
 |-- DBCS.cs
 |-- Member.cs
 |-- MemberTypeMaster.cs
 |-- Payment.cs
 |-- Relationship.cs
 |-- StatusMaster.cs



DBCS.cs



using System;
using System.Data.Entity;

namespace Munim_File_Sharing.Models
{
    public class DBCS : DbContext
    {
        public DbSet&lt;Member&gt; Members { get; set; }
        public DbSet&lt;MemberTypeMaster&gt; MemberTypeMasters { get; set; }
        public DbSet&lt;Payment&gt; Payments { get; set; }
        public DbSet&lt;Relationship&gt; RelationShips { get; set; }
        public DbSet&lt;StatusMaster&gt; StatusMasters { get; set; }
    }
}


Member.cs

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

namespace Munim_File_Sharing.Models
{
    public class Member
    {
        [Key]
        public int MemberID { get; set; }
        public string Name { get; set; }
        public string Password { get; set; }
        public string MobileNo { get; set; }
        public string FileName { get; set; }
        public Nullable&lt;DateTime&gt; MemberSince { get; set; }
        public int MemberTypeID { get; set; }

        public virtual MemberTypeMaster MemberTypeMaster { get; set; }
        public virtual ICollection&lt;Payment&gt; Payments { get; set; }
        public virtual ICollection&lt;Relationship&gt; RelationshipSenders { get; set; }
        public virtual ICollection&lt;Relationship&gt; RelationshipReceivers { get; set; }
    }
}


MemberTypeMaster.cs

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

namespace Munim_File_Sharing.Models
{
    public class MemberTypeMaster
    {
        [Key]
        public int MemberTypeID { get; set; }
        public string MemberType { get; set; }

        public ICollection&lt;Member&gt; Members { get; set; }
    }
}


Payment.cs

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

namespace Munim_File_Sharing.Models
{
    public class Payment
    {
        [Key]
        public int PaymentID { get; set; }
        public decimal Amount { get; set; }
        public DateTime DateOfReceipt { get; set; }
        public int MemberID { get; set; }

        public virtual Member Member { get; set; }
    }

}


Relationship.cs

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

namespace Munim_File_Sharing.Models
{
    public class Relationship
    {
        [Key]
        public int RelationshipID { get; set; }
        public int RequestSenderID { get; set; }
        public int RequestReceiverID { get; set; }
        public int StatusID { get; set; }

        public virtual Member RequestSender { get; set; }
        public virtual Member RequestReciever { get; set; }
        public virtual StatusMaster Status { get; set; }
    }
}


StatusMaster.cs

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

namespace Munim_File_Sharing.Models
{
    public class StatusMaster
    {
        [Key]
        public int StatusID { get; set; }
        public string Status { get; set; }

        public virtual ICollection&lt;Relationship&gt; Relationships { get; set; }
    }
}


connectionString in web.Config:



&lt;connectionStrings&gt;
    &lt;add name="DBCS" connectionString="server=.; database=FileSharingDB; Integrated Security = SSPI" providerName="System.Data.SqlClient" /&gt;
&lt;/connectionStrings&gt;


Is there any problem in my above classes? Am I forgetting anything in Models?
The above classes are used by entity framework for persistance, don't confuse these with the Models in MVC. While its possible to use them directly in MVC, its considered bad practise to so tightly couple your presentation layer to your persistance layer.

Look at tools like AutoMapper that can help you map from the above classes to your actual View Models. Try and have one view model per page and populate them with properties that make sense to the presentation of the data, not its storage.

ie: 

public class User
{
    [Key]
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class UserModel
    {
        public string Name { get; set; }
    }

Mapper.CreateMap&lt;User,UsersModel&gt;()
    .ForMember(dst =&gt; dst.Name, m =&gt; m.MapFrom(src =&gt; src.FirstName + " " + src.LastName))


and

var userModel = Mapper.Map&lt;User, UserModel&gt;(user);


Then use the userModel in your view.