EntityPrimaryKeyAttribute Class

Used to determine which columns represent the Entity's primary key.

Definition

Namespace: Firefly.Box.Data
Assembly: Firefly.Box (in Firefly.Box.dll) Version: debug-master-v:33791
C#
public class PrimaryKeyAttribute : Attribute
Inheritance
Object    Attribute    EntityPrimaryKeyAttribute

Example

This example demonstrates the usage of pubs
This example is based on test data. The code for the entities included in this test data can be found in the documentation of Entity
C#
using System.Text;
using Firefly.Box.Data;
using Firefly.Box;
using Firefly.Box.Data.Advanced;
using Firefly.Box.Data.DataProvider;

namespace TestFirefly.Box.Documentation
{
    /// <summary>
    /// This data base is based on tables from the Microsoft demo database "pubs". It's scripts can be downloaded from:
    /// http://www.microsoft.com/downloads/details.aspx?familyid=06616212-0356-46a0-8da2-eebc53a68034&displaylang=en
    /// </summary>

    public class Pubs
    {
        public class Employees : Entity
        {
            [PrimaryKey]
            internal readonly TextColumn Id = new TextColumn("emp_id", "9", "Id");
            internal readonly TextColumn FirstName = new TextColumn("fname", "20", "First name");
            internal readonly TextColumn MiddleInitial = new TextColumn("minit", "1", "Middle initial");
            internal readonly TextColumn LastName = new TextColumn("lname", "30", "Last name");
            internal readonly JobId JobId = new JobId();
            internal readonly JobLevel JobLevel = new JobLevel();
            internal readonly PublisherId PublisherId = new PublisherId();

            public Employees():base("employee",DataSource)
            {
            }
            public void InitializeWithTestData()
            {
                Truncate();
                Insert("A-C71970F", "Aria", "", "Cruz", 10, 87, "1389");
                Insert("A-R89858F", "Annette", "", "Roulet", 6, 152, "9999");
                Insert("AMD15433F", "Ann", "M", "Devon", 3, 200, "9952");
                Insert("ARD36773F", "Anabela", "R", "Domingues", 8, 100, "0877");
                Insert("CFH28514M", "Carlos", "F", "Hernadez", 5, 211, "9999");
                Insert("CGS88322F", "Carine", "G", "Schmitt", 13, 64, "1389");
                Insert("DBT39435M", "Daniel", "B", "Tonini", 11, 75, "0877");
                Insert("DWR65030M", "Diego", "W", "Roel", 6, 192, "1389");
                Insert("ENL44273F", "Elizabeth", "N", "Lincoln", 14, 35, "0877");
                Insert("F-C16315M", "Francisco", "", "Chang", 4, 227, "9952");
                Insert("GHT50241M", "Gary", "H", "Thomas", 9, 170, "0736");
                Insert("H-B39728F", "Helen", "", "Bennett", 12, 35, "0877");
                Insert("HAN90777M", "Helvetius", "A", "Nagy", 7, 120, "9999");
                Insert("HAS54740M", "Howard", "A", "Snyder", 12, 100, "0736");
                Insert("JYL26161F", "Janine", "Y", "Labrune", 5, 172, "9901");
                Insert("KFJ64308F", "Karin", "F", "Josephs", 14, 100, "0736");
                Insert("KJJ92907F", "Karla", "J", "Jablonski", 9, 170, "9999");
                Insert("L-B31947F", "Lesley", "", "Brown", 7, 120, "0877");
                Insert("LAL21447M", "Laurence", "A", "Lebihan", 5, 175, "0736");
                Insert("M-L67958F", "Maria", "", "Larsson", 7, 135, "1389");
                Insert("M-P91209M", "Manuel", "", "Pereira", 8, 101, "9999");
                Insert("M-R38834F", "Martine", "", "Rance", 9, 75, "0877");
                Insert("MAP77183M", "Miguel", "A", "Paolino", 11, 112, "1389");
                Insert("MAS70474F", "Margaret", "A", "Smith", 9, 78, "1389");
                Insert("MFS52347M", "Martin", "F", "Sommer", 10, 165, "0736");
                Insert("MGK44605M", "Matti", "G", "Karttunen", 6, 220, "0736");
                Insert("MJP25939M", "Maria", "J", "Pontes", 5, 246, "1756");
                Insert("MMS49649F", "Mary", "M", "Saveley", 8, 175, "0736");
                Insert("PCM98509F", "Patricia", "C", "McKenna", 11, 150, "9999");
                Insert("PDI47470M", "Palle", "D", "Ibsen", 7, 195, "0736");
                Insert("PHF38899M", "Peter", "H", "Franken", 10, 75, "0877");
                Insert("PMA42628M", "Paolo", "M", "Accorti", 13, 35, "0877");
                Insert("POK93028M", "Pirkko", "O", "Koskitalo", 10, 80, "9999");
                Insert("PSA89086M", "Pedro", "S", "Afonso", 14, 89, "1389");
                Insert("PSP68661F", "Paula", "S", "Parente", 8, 125, "1389");
                Insert("PTC11962M", "Philip", "T", "Cramer", 2, 215, "9952");
                Insert("PXH22250M", "Paul", "X", "Henriot", 5, 159, "0877");
                Insert("R-M53550M", "Roland", "", "Mendel", 11, 150, "0736");
                Insert("RBM23061F", "Rita", "B", "Muller", 5, 198, "1622");
                Insert("SKO22412M", "Sven", "K", "Ottlieb", 5, 150, "1389");
                Insert("TPO55093M", "Timothy", "P", "O'Rourke", 13, 100, "0736");
                Insert("VPA30890F", "Victoria", "P", "Ashworth", 6, 140, "0877");
                Insert("Y-L77953M", "Yoshi", "", "Latimer", 12, 32, "1389");
            }
            public void Insert(Text id,Text firstName,Text middleInitial,Text lastName,int jobid,int jobLevel,string publisherId)
            {
                Employees e = new Employees();
                BusinessProcess bp = new BusinessProcess();
                bp.From = e;
                bp.AddAllColumns();
                bp.Activity = Activities.Insert;
                bp.ForFirstRow(delegate()
                          {
                              e.Id.Value = id;
                              e.FirstName.Value = firstName;
                              e.MiddleInitial.Value = middleInitial;
                              e.LastName.Value = lastName;
                              e.JobId.Value = jobid;
                              e.JobLevel.Value = jobLevel;
                              e.PublisherId.Value = publisherId;
                          });
            }
        }
        public class Jobs : Entity
        {
            [PrimaryKey]
            internal readonly JobId Id = new JobId();
            internal readonly TextColumn Description = new TextColumn("Job_desc", "50", "Description");
            internal readonly JobLevel MinLevel = new JobLevel("min_lvl"){Caption = "Min Level"};
            internal readonly JobLevel MaxLevel = new JobLevel("max_lvl"){Caption = "Max Level"};
            public Jobs():base("jobs",DataSource)
            {
            }
            public void InitializeWithTestData()
            {
                Truncate();
                Insert(1, "New Hire - Job not specified", 10, 10);
                Insert(2, "Chief Executive Officer", 200, 250);
                Insert(3, "Business Operations Manager", 175, 225);
                Insert(4, "Chief Financial Officier", 175, 250);
                Insert(5, "Publisher", 150, 250);
                Insert(6, "Managing Editor", 140, 225);
                Insert(7, "Marketing Manager", 120, 200);
                Insert(8, "Public Relations Manager", 100, 175);
                Insert(9, "Acquisitions Manager", 75, 175);
                Insert(10, "Productions Manager", 75, 165);
                Insert(11, "Operations Manager", 75, 150);
                Insert(12, "Editor", 25, 100);
                Insert(13, "Sales Representative", 25, 100);
                Insert(14, "Designer", 25, 100);
            }


            public void Insert(int jobId,Text description,int minLevel,int maxLevel)
            {
                Jobs j = new Jobs();
                BusinessProcess bp = new BusinessProcess();
                bp.From = j;
                bp.AddAllColumns();
                bp.Activity = Activities.Insert;
                bp.ForFirstRow(delegate()
                          {
                              j.Id.Value = jobId;
                              j.Description.Value = description;
                              j.MinLevel.Value = minLevel;
                              j.MaxLevel.Value = maxLevel;
                          });
            }
        }
        public class Publishers : Entity
        {
            [PrimaryKey]
            internal readonly PublisherId Id = new PublisherId();
            internal readonly TextColumn Name = new TextColumn("pub_name", "40", "Name");
            internal readonly TextColumn City = new TextColumn("City", "20");
            internal readonly TextColumn State = new TextColumn("State", "2");
            internal readonly TextColumn Country = new TextColumn("Country");
            public Publishers():base("Publishers",DataSource)
            {
            }
            public void InitializeWithTestData()
            {
                Truncate();
                Insert("0736", "New Moon Books", "Boston", "MA", "USA");
                Insert("0877", "Binnet & Hardley", "Washington", "DC", "USA");
                Insert("1389", "Algodata Infosystems", "Berkeley", "CA", "USA");
                Insert("1622", "Five Lakes Publishing", "Chicago", "IL", "USA");
                Insert("1756", "Ramona Publishers", "Dallas", "TX", "USA");
                Insert("9901", "GGG&G", "Mnchen", "", "Germany");
                Insert("9952", "Scootney Books", "New York", "NY", "USA");
                Insert("9999", "Lucerne Publishing", "Paris", "", "France");
            }

            public void Insert(Text publisherId,Text name,Text city,Text state,Text country)
            {
                Publishers p = new Publishers();
                BusinessProcess bp = new BusinessProcess();
                bp.From = p;
                bp.AddAllColumns();
                bp.Activity = Activities.Insert;
                bp.ForFirstRow(delegate()
                          {
                              p.Id.Value = publisherId;
                              p.Name.Value = name;
                              p.City.Value = city;
                              p.State.Value = state;
                              p.Country.Value = country;
                          });
            }
        }
        static Pubs()
        {
            // a dataset datasource
            DataSource = new DataSetDataProvider();
            // An mssql datasource that access the pubs db
            /*DataSource =
                SQLDataProviderBase.CreateSqlClientDataProvider(
                    "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=(local)\\SQLEXPRESS;Connect Timeout=5;");*/
        }

        public static readonly DataSetDataProvider DataSource;

        public class JobId : NumberColumn
        {
            public JobId()
                : base("job_id", "2", "Job Id")
            {
            }
        }

        public class JobLevel : NumberColumn
        {
            public JobLevel(string name)
                : base(name ?? "job_lvl", "3", "Job level")
            {
            }
            public JobLevel()
                : this(null)
            {
            }
        }
        public class PublisherId : TextColumn
        {
            public PublisherId()
                : base("pub_id", "4", "publisher id")
            {
            }
        }
    }
}

Constructors

EntityPrimaryKeyAttributeInitializes a new instance of the EntityPrimaryKeyAttribute class.

Properties

Identity Used to mark Identity columns in the database.
TypeIdWhen implemented in a derived class, gets a unique identifier for this Attribute.
(Inherited from Attribute)

Methods

EqualsReturns a value that indicates whether this instance is equal to a specified object.
(Inherited from Attribute)
FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
GetHashCodeReturns the hash code for this instance.
(Inherited from Attribute)
GetTypeGets the Type of the current instance.
(Inherited from Object)
IsDefaultAttributeWhen overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.
(Inherited from Attribute)
MatchWhen overridden in a derived class, returns a value that indicates whether this instance equals a specified object.
(Inherited from Attribute)
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
ToStringReturns a string that represents the current object.
(Inherited from Object)

See Also