lunedì 15 agosto 2011

XA.EF Entity framework (3)

Per le entity e la collezione rimango ancora due o tre cosuccie da definire.

Dato che a priori non potrò sapere in quale lingua è stato realizzato il db e dato che non voglio studiarmi, quanto meno per il momento, una regular expression, per definire i singolari e i plurali.

Utilizzerò questa convenzione:
-NomeEntita = NomeTabella,
-NomeCollezione = NomeTabella_List,
-NomeAdapter = NomeTabella_Adapter.

Che per il momento ritengo valida e plausibile. Di contro c'e' ancora da considerare come si potrà utilizzare questo prodotto.

La prima idea è stata di realizzare un plugin per la ide, ma non mi ha convinto del tutto. Ritengo che la realizzazione di un prodotto Stand Alone possa dare maggior equilibrio, certo è vero che questo presupposto allontana un po' dall'usabilità stessa.

Quindi tornando alle mie preziose definizioni, direi che per l'entità posso raccogliere:
-Using ( servono sempre )
-Namespace ( per forza )
-Modificatore
-Nome classe
-Elenco di Field
-Elenco di Property
-Flag per creare il costruttore
-Flag per creare il distruttore
-Override di ToString ( che lascerò come fisso ... vedi post: ToString


Questo implica che dovrò implementare un writer overridabile per ogni elemento presente in questa lista.
Non solo devo creare anche un Tipo per i Field e un tipo per le proprietà, in questo modo prevengo il dover effettuare un continuo accesso al db.
Di concetto mi piacerebbe estrarre tutto fin dall'inizio, leggerlo e processarlo. Mi sta quasi balenando l'idea di creare un seriliazzatore anche se forse non è il caso.

public class PropertyPrototype

{
private string _accessType;
private string _valueType;
private string _name;
private string _description;
private bool _isReadOnly;

public string AccessType
{
get { return _accessType; }
set { _accessType = value; }
}

public string ValueType
{
get { return _valueType; }
set { _valueType = value; }
}

public string Name
{
get { return _name; }
set { _name = value; }
}

public string Description
{
get { return _description; }
set { _description = value; }
}

public bool IsReadOnly
{
get { return _isReadOnly; }
set { _isReadOnly = value; }
}
}


Partendo quindi dal prototipo più interessante mi sono ricavato questa classe, che per il momento descrive egreggiamente una proprietà.

public class PropertiesPrototype : List<PropertyPrototype>

{

}


E giusto per non smentirmi questa è la mia collezione.

Nessun commento: