Specifies that the class in question is a complex type, used for the construction of several others Models.
For example:
[ComplexType]
public class Address
{
[Key]
public int AddressId { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string PostalCode { get; set; }
}
public class Person
{
[Key]
public int PersonId { get; set; }
...
public Address Address { get; set; }
}
public class Company
{
[Key]
public int CompanyId { get; set; }
...
public Address Address { get; set; }
}
A ComplexType
normally cannot be accessed directly by a data context.
Serves to explicitly specify a relation N to 1. It is specified when the property name is not default.
For example:
public class Movimentacao
{
[Key]
public int MovimentacaoId { get; set; }
public int ProdutoId { get; set; }
public int UsuarioId { get; set; }
[InverseProperty("UsuariosMovimentaramProdutos")]
public virtual Produto Produto { get; set; }
[InverseProperty("UsuariosMovimentaramProdutos")]
public virtual Usuario Usuario { get; set; }
}
public class Usuario
{
[Key]
public int UsuarioId { get; set; }
...
public virtual ICollection<Movimentacao> UsuariosMovimentaramProdutos { get; set; }
}
public class Produto
{
[Key]
public int ProdutoId { get; set; }
...
public virtual ICollection<Movimentacao> UsuariosMovimentaramProdutos { get; set; }
}
Serves to explicitly specify which foreign entity the foreign key property refers to. For example:
public class Usuario
{
[Key]
public int UsuarioId { get; set; }
...
public virtual ICollection<Movimentacao> UsuariosMovimentaramProdutos { get; set; }
}
public class Produto
{
[Key]
public int ProdutoId { get; set; }
[ForeignKey("Usuario")]
public OperadorDeCadastroId { get; set; }
...
public virtual ICollection<Movimentacao> Movimentacoes { get; set; }
public virtual Usuario OperadorDeCadastro { get; set; }
}
Indicates for the engine of Scaffolding whether the column should be generated in its View.
It is usually used to nay place the property in View.