| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Diagnostics.CodeAnalysis;
- namespace System.Data.Linq.Mapping {
- /// <summary>
- /// Attribute placed on a method mapped to a User Defined Function.
- /// </summary>
- [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
- public sealed class FunctionAttribute : Attribute {
- string name;
- bool isComposable;
- public FunctionAttribute() {
- }
- public string Name {
- get { return this.name; }
- set { this.name = value; }
- }
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Composable", Justification="Spelling is correct.")]
- public bool IsComposable {
- get { return this.isComposable; }
- set { this.isComposable = value; }
- }
- }
- /// <summary>
- /// This attribute is applied to functions returning multiple result types,
- /// to declare the possible result types returned from the function. For
- /// inheritance types, only the root type of the inheritance hierarchy need
- /// be specified.
- /// </summary>
- [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
- public sealed class ResultTypeAttribute : Attribute {
- Type type;
- public ResultTypeAttribute(Type type) {
- this.type = type;
- }
- [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The contexts in which this is available are fairly specific.")]
- public Type Type {
- get { return this.type; }
- }
- }
- [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.ReturnValue, AllowMultiple = false)]
- public sealed class ParameterAttribute : Attribute {
- string name;
- string dbType;
- public ParameterAttribute() {
- }
- public string Name {
- get { return this.name; }
- set { this.name = value; }
- }
- [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db", Justification = "Conforms to legacy spelling.")]
- public string DbType {
- get { return this.dbType; }
- set { this.dbType = value; }
- }
- }
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
- public sealed class DatabaseAttribute : Attribute {
- string name;
- public DatabaseAttribute() {
- }
- public string Name {
- get { return this.name; }
- set { this.name = value; }
- }
- }
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
- public sealed class TableAttribute : Attribute {
- string name;
- public TableAttribute() {
- }
- public string Name {
- get { return this.name; }
- set { this.name = value; }
- }
- }
- /// <summary>
- /// Class attribute used to describe an inheritance hierarchy to be mapped.
- /// For example,
- ///
- /// [Table(Name = "People")]
- /// [InheritanceMapping(Code = "P", Type = typeof(Person), IsDefault=true)]
- /// [InheritanceMapping(Code = "C", Type = typeof(Customer))]
- /// [InheritanceMapping(Code = "E", Type = typeof(Employee))]
- /// class Person { ... }
- ///
- /// </summary>
- [AttributeUsage(AttributeTargets.Class, AllowMultiple=true, Inherited = false)]
- public sealed class InheritanceMappingAttribute : Attribute {
- private object code;
- private Type type;
- private bool isDefault;
- /// <summary>
- /// Discriminator value in store column for this type.
- /// </summary>
- public object Code {
- get { return this.code; }
- set { this.code = value; }
- }
- /// <summary>
- /// Type to instantiate when Key is matched.
- /// </summary>
- [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification="The contexts in which this is available are fairly specific.")]
- public Type Type {
- get { return this.type; }
- set { this.type = value; }
- }
- /// <summary>
- /// If discriminator value in store column is unrecognized then instantiate this type.
- /// </summary>
- public bool IsDefault {
- get { return this.isDefault; }
- set { this.isDefault = value; }
- }
- }
- public abstract class DataAttribute : Attribute {
- string name;
- string storage;
- protected DataAttribute() { }
- public string Name {
- get { return this.name; }
- set { name = value; }
- }
- public string Storage {
- get { return this.storage; }
- set { this.storage = value; }
- }
- }
- public enum UpdateCheck {
- Always,
- Never,
- WhenChanged
- }
- /// <summary>
- /// Used to specify for during insert and update operations when
- /// a data member should be read back after the operation completes.
- /// </summary>
- public enum AutoSync {
- Default = 0, // Automatically choose
- Always = 1,
- Never = 2,
- OnInsert = 3,
- OnUpdate = 4
- }
- [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
- public sealed class ColumnAttribute : DataAttribute {
- string dbtype;
- string expression;
- bool isPrimaryKey;
- bool isDBGenerated;
- bool isVersion;
- bool isDiscriminator;
- bool canBeNull = true;
- UpdateCheck check;
- AutoSync autoSync = AutoSync.Default;
- bool canBeNullSet = false;
- public ColumnAttribute() {
- check = UpdateCheck.Always;
- }
- [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db", Justification="Conforms to legacy spelling.")]
- public string DbType {
- get { return this.dbtype; }
- set { this.dbtype = value; }
- }
- public string Expression {
- get { return this.expression; }
- set { this.expression = value; }
- }
- public bool IsPrimaryKey {
- get { return this.isPrimaryKey; }
- set { this.isPrimaryKey = value; }
- }
- [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db", Justification = "Conforms to legacy spelling.")]
- public bool IsDbGenerated {
- get { return this.isDBGenerated; }
- set { this.isDBGenerated = value; }
- }
- public bool IsVersion {
- get { return this.isVersion; }
- set { this.isVersion = value; }
- }
- public UpdateCheck UpdateCheck {
- get { return this.check; }
- set { this.check = value; }
- }
- public AutoSync AutoSync {
- get { return this.autoSync; }
- set { this.autoSync = value; }
- }
- public bool IsDiscriminator {
- get { return this.isDiscriminator; }
- set { isDiscriminator = value; }
- }
- public bool CanBeNull {
- get {return this.canBeNull;}
- set {
- this.canBeNullSet = true;
- this.canBeNull = value;
- }
- }
- internal bool CanBeNullSet {
- get {return this.canBeNullSet;}
- }
- }
- [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
- public sealed class AssociationAttribute : DataAttribute {
- string thisKey;
- string otherKey;
- bool isUnique;
- bool isForeignKey;
- bool deleteOnNull;
- string deleteRule;
-
- public AssociationAttribute() { }
- public string ThisKey {
- get { return this.thisKey; }
- set { this.thisKey = value; }
- }
- public string OtherKey {
- get { return this.otherKey; }
- set { this.otherKey = value; }
- }
- public bool IsUnique {
- get { return this.isUnique; }
- set { this.isUnique = value; }
- }
- public bool IsForeignKey {
- get { return this.isForeignKey; }
- set { this.isForeignKey = value; }
- }
- public string DeleteRule {
- get { return this.deleteRule; }
- set { this.deleteRule = value; }
- }
- public bool DeleteOnNull {
- get { return this.deleteOnNull; }
- set { this.deleteOnNull = value; }
- }
- }
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
- public sealed class ProviderAttribute : Attribute {
- Type providerType;
- public ProviderAttribute() {
- }
- public ProviderAttribute(Type type) {
- this.providerType = type;
- }
- [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification = "The contexts in which this is available are fairly specific.")]
- public Type Type {
- get { return this.providerType; }
- }
- }
- }
|