<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Βάσεις δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/73/ShowForum.aspx</link><description>Για όσους κάνουν τα πρώτα τους βήματα στην Microsoft Access ή τον SQL Server, ή γενικότερα στη θεωρία βάσεων δεδομένων.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59602.aspx</link><pubDate>Mon, 02 Aug 2010 02:58:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59602</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59602.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59602</wfw:commentRss><description>&lt;P&gt;Χαίρομαι που δούλεψε για σένα...&lt;/P&gt;
&lt;P&gt;Αλλά, έχω τις επιφυλάξεις μου ότι και οι δύο μιλάγαμε για διαφορετικά πράγματα: &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-6.gif" alt="Sad" /&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Web site εγώ εννοούσα το &lt;A href="http://www.codersbarn.com/post/2008/06/ASPNET-Web-Site-versus-Web-Application-Project.aspx"&gt;Web Site project&lt;/A&gt;&amp;nbsp;(βλ άρθρο που συγκρίνει Web Site project vs Web Application project) του Visual Studio, και όταν λέγαμε &lt;A href="http://msdn.microsoft.com/en-us/library/bb425822.aspx"&gt;Linq2Sql&lt;/A&gt; εγώ εννοούσα το Data Access Framework της Microsoft που περιέχεται στο NET Framework.&lt;/LI&gt;
&lt;LI&gt;Εσύ αναφερόσουν γενικά στην έννοια web site, και για Linq2Sql στην ικανότητα της Linq να παράγει SQL κώδικα. Και από το web site και Linq2Sql, έφτασες στο MVC2 και στο &lt;A href="http://code.google.com/p/dblinq2007/"&gt;DBLinq&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Θα&amp;nbsp;μπορούσα να είμαι πιο εύστοχος στις απαντήσεις μου, αν ήσουν πιο ξεκάθαρος από την αρχή...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59600.aspx</link><pubDate>Sun, 01 Aug 2010 01:49:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59600</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59600.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59600</wfw:commentRss><description>Αυτό που μου μένει παντως είναι αυτή η ιστορία με την δημιουργία κλάσσης on-the-fly, on-the-run, όπως θές πές το.&lt;br&gt;Σε Java δεν έχω ακούσει να γίνεται, και αν δεν γίνεται σίγουρα κάποια στιγμή θα υπάρξει. Δεν είναι πολύ mainstream αλλά με βάση το ψάξιμο, σκέψου ένα σύστημα που θα μπορούσε με δεδομένα από μια πηγή, να παράγει δικές του κλάσσεις object και να δίνει πίσω στον developer το απότελεσμα αυτό. Σαν visual designer ok υπάρχει από UML, αλλά όχι πιά γιατί κάνω κλίκ και βγάζω απο UML, τον κώδικα αλλά γιατί έχω live data.&lt;br&gt;Δεν ξερώ αν γίνεται, δεν ξέρω αν το έχουν κάνει ήδη αλλά προκαλεί την φαντασία :-P&lt;br&gt;&lt;br&gt;Θα σου πώς επίσης τελευταίο ότι έστησα την δουλειά με το dbmetal ώστε από κάτω έχω mysql. Και το λέω με λίγο περηφάνια γιατί και αυτό ήταν καλός πονοκέφαλος.&lt;br&gt;&lt;br&gt;Ok, σε ευχαριστώ πολύ για τις συμβουλές.&lt;br&gt;:-)&lt;br&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59599.aspx</link><pubDate>Sat, 31 Jul 2010 15:58:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59599</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59599.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59599</wfw:commentRss><description>&lt;P&gt;Καλημέρα,&lt;/P&gt;
&lt;P&gt;Να τα ξαναπάμε από την αρχή - δεν θα έχεις .dbml αρχείο στο project σου με τον τρόπο που σου υπέδειξα - θα υπάρχει μόνο μία κλάση, ένα .cs ή .vb αρχείο ότι επιλέξεις.&lt;/P&gt;
&lt;P&gt;On the fly δημιουργία με κώδικα, μέσα από web site project δεν είναι εύκολη. Μπορεί τεχνικά να γίνει, με την χρήση ενός BuildProvider, αλλά δεν νομίζω ότι θέλεις να εμπλακείς σε κάτι τέτοιο.&lt;/P&gt;
&lt;P&gt;Το Linq2Dataset είναι κάτι το διαφορετικό, από αυτό που συζητάμε μέχρι τώρα - και βέβαια πάμε πίσω στο designer και τις συνεχείς αλλαγές που θα πρέπει να γίνονται. Τα Dataset είναι η παλαιότερη τεχνολογία που υπάρχει από πλευράς ADO.NET αυτή τη στιγμή και δεν θα πρότεινα να φτιάξεις καινούργιες εφαρμογές με αυτή. Ήδη έχει και τρέχει από την έκδοση v1.0 του .NET Framework. Το σίγουρο είναι ότι θα είναι από τις πρώτες που θα αποσυρθούν, όταν έρθει η ώρα.&lt;/P&gt;
&lt;P&gt;Το MVC2 μπορεί να παίξει με οτιδήποτε - δεν υπάρχει κάποιος περιορισμός.&amp;nbsp;Ο συνδυασμός MVC2 και Linq2Sql είναι ότι πιο "ανάλαφρο" υπάρχει - για αυτό και το προτιμούν οι περισσότεροι. Σε σύγκριση με τα web sites, το MVC2 προσφέρει web application project,&amp;nbsp;με την δυνατότητα build events - στην δική σου περίπτωση πχ, θα μπορούσες να βάλεις το .cmd αρχείο στα pre-build events&amp;nbsp;του project σου&amp;nbsp;και χωρίς κάτι παραπάνω με απλό build του project, θα ανανεωνόταν η κλάση που θα σου έδινε πρόσβαση στη βάση και δεν θα "έπρεπε" να ξέρεις πότε έγιναν ή θα γίνουν αλλαγές.&lt;/P&gt;
&lt;P&gt;Η καλύτερη πηγή μάθησης MVC είναι το ίδιο το ASP.NET &lt;A href="http://www.asp.net/mvc"&gt;site&lt;/A&gt;. Δεν νομίζω ότι υπάρχουν αλλού συγκεντρωμένα τόσα resources, όσα εκεί...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59598.aspx</link><pubDate>Sat, 31 Jul 2010 07:39:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59598</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59598.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59598</wfw:commentRss><description>&lt;P&gt;Πράγματι, Γιώργο, αύτό που λές μάλλον θα γίνει. Δεν βλέπω άλλη λύση και εγώ. Απλά θα έχω πάντα ένα dbml που θα είναι πάντα ανανεωμένο.&lt;/P&gt;
&lt;P&gt;Έψαχνα να κάνω και το εξής, να δημιουργώ την κλάση on-the-fly την ώρα που τρέχει ο κώδικας, αλλά αυτό με πήγε σε CodeDom.. ? και ....οκ πάει μακρυά.&lt;/P&gt;
&lt;P&gt;Τελευταίο...Επειδή είδα ότι υπάρχει και Linq to dataset, μπορεί να υπάρξει το MVC2 με αυτό; Το δύκτιο έχει πήξει από MVC2 + Linq2sql...Υπάρχει κάποιο link αν είναι δυνατόν; Από microsoft ίσως;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59596.aspx</link><pubDate>Sat, 31 Jul 2010 04:10:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59596</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59596.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59596</wfw:commentRss><description>&lt;P&gt;Ωραία! &lt;/P&gt;
&lt;P&gt;Προσωπική πρόταση θα ήταν να χρησιμοποιήσεις το &lt;A href="http://msdn.microsoft.com/en-us/library/bb386987.aspx"&gt;SqlMetal&lt;/A&gt; εργαλείο:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Δεδομένου ότι θέλεις να μπορείς να φτιάχνεις web sites, που δεν έχεις επιλογές για actions κατά το build του project, θα πρότεινα να φτιάχνεις ένα .cmd αρχείο με την απαραίτητη εντολή προς το SqlMetal που με τη σειρά του θα φτιάχνει την κλάση που θα δίνει πρόσβαση στην βάση. Θα έχεις ένα τέτοιο .cmd αρχείο για κάθε σου project.&lt;/LI&gt;
&lt;LI&gt;Όποτε απαιτείται, θα τρέχεις αυτό το .cmd αρχεία και θα παράγεται αυτόματα η κλάση - δεν θα υπάρχει ανάγκη για να φτιάξεις οτιδήποτε με το χέρι ή να πειράξεις περαιτέρω την κλάση που δημιουργείται...&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59593.aspx</link><pubDate>Sat, 31 Jul 2010 00:45:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59593</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59593.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59593</wfw:commentRss><description>1. Συμφωνώ απόλυτα! :-)&lt;br&gt;&lt;br&gt;2. Στον τελευταίο snippet που σας παρέθεσα, είναι ότι ποιο κοντινό έχω βρεί σε αυτή την λογική....&lt;br&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59592.aspx</link><pubDate>Sat, 31 Jul 2010 00:36:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59592</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59592.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59592</wfw:commentRss><description>&lt;P&gt;Να θέσουμε μερικά ground rules για να μπορέσουμε να προχωρήσουμε:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;To .dbml αρχείο δεν είναι απαραίτητο για να μπορέσεις να έχεις Linq2Sql στην εφαρμογή σου. Είναι ένα meta-data αρχείο, που προφανώς είναι προορισμένο για το οδηγό που το συνοδεύει. &lt;/LI&gt;
&lt;LI&gt;Από ότι κατάλαβα,&amp;nbsp;δουλεύεις ένα schema βάσης που μεταβάλλεται - δεν μπορείς όλη την ώρα να ασχολείσαι με το να κρατάς up-to-date το .dbml αρχείο και να προσθέτεις ή να αφαιρείς πεδία και πίνακες με την χρήση του wizard. Παρόλα αυτά θες ένα σταθερό τρόπο, για να μπορείς να κάνεις την ανάπτυξη της εφαρμογής σου.&lt;/LI&gt;
&lt;LI&gt;Η όλη συζήτηση γίνεται για να βρεθεί ένας τρόπος για να γράφεται/δημιουργείται η κλάση που στη συνέχεια θα χρησιμοποιείς για να έχεις την εύκολη προσπέλαση στην βάση.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Πες αν συμφωνείς ή που διαφωνείς με τα παραπάνω, ή έχεις κάτι να προσθέσεις για να συνεχίσουμε...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59591.aspx</link><pubDate>Fri, 30 Jul 2010 23:45:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59591</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59591.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59591</wfw:commentRss><description>Γιώργο καταρχήν ευχαριστώ για την εξήγηση και το κώδικα.&lt;br&gt;&lt;br&gt;Πρέπει να πώ, ότι δεν είχα την εμπειρία με το Linq και το dbml, kai εχω φάει 2-3 μέρες να ψάχνωμαι. Το πρόβλημα ξεκίνησε , διότι είχαμε ένα software που έκανε αυτό που λέω και θέλουμε να το αφήσουμε πίσω μας και να πάμε σε καλύτερα μοντέλλα ανάπτυξης ( σε πολλά επίπεδα! ).&lt;br&gt;&lt;br&gt;Το καλό που είχε το software μας, ήταν ότι μπορεί να διαβάσει κάποιο βασικό σχήμα και μετά, να το επεκτείνεις με νέους πίνακες και συνδέσεις στον κώδικα, κατα συνέπεια στην μνήμη.&lt;br&gt;Τι διαφορετικό είχε αυτό; Μια πραγματικά απίστευτη ευκολία, αν είχες ένα πίνακα με 2 πεδία ή 42, δεν σε ενδιέφερε δυναμικά σηκωνώτανε ο πίνακας, και εσύ έπαιρνες τα κλειδιά.&lt;br&gt;Τώρα, με το ORM προγραμματισμό, πρέπει να παράγεις version του κώδικα/του πίνακα/των script και γω δεν ξέρω με αποτέλεσμα να τρώς χρόνο στο Μanagement αυτών των πραγμάτων.&lt;br&gt;Ισως καλό για μια μεγάλη εταιρεία, όχι όμως για εμάς. Γιατί απλά δεν γίνεται να χεις όλο αυτό τον όγκο ανάλογα με το πρότζεκτ κιόλας.&lt;br&gt;&lt;br&gt;Στον παρακάτω κώδικα, εκτελώντας ένα ερώτημα κατευθείαν στην βάση παίρνω ένα αντικείμενο "Department" που είναι partial class και από οσο έχω καταλάβει ουσιαστικά παίζει το ρόλο του interface με τον πίνακα.&lt;br&gt;Γιατί το Department μαγικά το έβαλα στο dbml. Αν προσθέσω fields δεν θα τα πάρω όμως.&lt;br&gt;1. Γίνεται, χωρίς να μετέχει το dbml στην μέση, να πάρω τόσα πεδία όσα βάλω στο query και να το γυρίσω σε αντικείμενο Πίνακα ίσως;;&lt;br&gt;2. Να πάρω το πίνακα και να το στείλω στην σελίδα για προβολή δεδομένων;&lt;br&gt;3. Ιδέα θέλω όχι κάποιον να μου γράψει πρόγραμμα ;-) Ιδέα και συμβουλή ότι γίνεται...ή δεν γίνεται.&lt;br&gt;&lt;br&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="font-family:courier new;font-size:11px;color:gray;margin:0px;padding:2px;"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;IDBrepository rep &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; Models.IDBrepository ();
var db &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; billingRepository.getDb();
db.Log &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Console.Out;
db.Connection.Open();
System.Data.Common.DbTransaction trx &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; db.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable);

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;try&lt;/span&gt; {
	db.Transaction &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; trx;
	var department &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; db.ExecuteQuery&amp;lt;Department&amp;gt;(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"SELECT UPPER(DepartmentId) DepartmentId, Description FROM Department ORDER BY Department.Ordering"&lt;/span&gt;).ToList();
	&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;foreach&lt;/span&gt; (Department record &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; department) {
		record.ToString();
	}
	Console.WriteLine(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;""&lt;/span&gt;);
} &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;catch&lt;/span&gt; (Exception ex) {
	Console.WriteLine(ex.ToString());
	&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (trx !&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;null&lt;/span&gt;)
		trx.Rollback();
} &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;finally&lt;/span&gt; {

&lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;// Close the connection&lt;/span&gt;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (db.Connection.State == System.Data.ConnectionState.Open)
	db.Connection.Close();
}&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;Συγνώμη αν κάνω "λάθος ερωτήσεις" με λάθος τρόπο, δίνω και κώδικα για να χουμε συννενόηση καλύτερη πιστεύω.&lt;br&gt;&lt;br&gt;(Πρόσεξα, ότι αν έχω το dbml τουλάχιστον συγχρονισμένο, και δεν πάρω με το query όλα τα πεδία, γεμίζουν όσα ζήτησα στο αντικείμενο....Βέβαια.....τι θα γίνει αν σώσω το αντικείμενο τότε;;; Θα γίνει update και οι τιμές στα πεδία που λείπουν;! )&lt;br&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59590.aspx</link><pubDate>Fri, 30 Jul 2010 23:14:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59590</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59590.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59590</wfw:commentRss><description>&lt;P&gt;Αρχικά θα πρέπει να κατανοήσεις πως δουλεύει κάτι, για να μπορέσεις να το πειράξεις να κάνει αυτό που θες:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Το .dbml αρχείο είναι ένα metadata αρχείο (ένα xml αρχείο), που περιέχει δεδομένα για το σχήμα της βάσης. Ο εύκολος τρόπος να το τροποποιήσεις είναι μέσα από το γραφικό οδηγό που παρέχει το visual studio. Κατά βάση το .dbml είναι σχεδιασμένο για να παίζει με αυτόν τον οδηγό, και γενικά έχει διευκολύνει τους προγραμματιστές. Δεν είναι κάποιος λιγότερο προγραμματιστής αν το χρησιμοποιεί.&lt;/LI&gt;
&lt;LI&gt;Μια βάση δεν είναι κώδικας - οπότε να λες ότι θα χρησιμοποιήσεις reflection για να διαβάσεις την βάση, είναι στην κατηγορία που αναφέρει ο Παναγιώτης πιο επάνω,&amp;nbsp;είναι&amp;nbsp;παράξενη αυτή η ερώτηση.&amp;nbsp;Το σχήμα θέλεις να διαβάσεις της βάσης δυναμικά, και εάν όντως το καταφέρεις και στη συνέχεια υλοποιήσεις ένα μηχανισμό που θα σου γράφει τις κλάσεις, τότε αυτό που κατάφερες, είναι να έχεις φτιάξει μια δική σου έκδοση του LINQ2SQL της Microsoft, μόνο που θα έχεις σπαταλήσει αρκετό χρόνο για να φτιάξεις κάτι λιγότερο από αυτό που ήδη έχεις.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Βέβαια, πάντα και παντού θα υπάρχουν εξαιρέσεις. Υπάρχουν άνθρωποι που θέλουν να ελέγχουν τα πάντα στον κώδικά τους. &lt;/P&gt;
&lt;P&gt;Αν θέλεις να κάνεις κάτι τέτοιο, μπορείς να μην χρησιμοποιήσεις τα .dbml αρχεία στο πρόγραμμά σου., Μπορείς να φτιάξεις την δική σου κλάση με το χέρι, αντίστοιχα με αυτή που φτιάχνει το .dbml αρχείο. &lt;/P&gt;
&lt;P&gt;Ο εύκολος τρόπος να φτιάξεις αυτή την κλάση είναι χρησιμοποιώντας το εργαλείο SQLMetal. Προσωπικά, έχω ένα .cmd αρχείο που χρησιμοποιώ για να φτιάχνω τις κλάσεις LINQ2SQL που χρησιμοποιώ:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;@Echo Off&lt;BR&gt;SETLOCAL&lt;BR&gt;SET Catalog=%1&lt;BR&gt;IF "%Catalog%"=="" SET Catalog=AspNetDB&lt;BR&gt;SET Server=%2&lt;BR&gt;IF "%Server%"=="" SET Server=.\SQLExpress&lt;BR&gt;ECHO Server:&amp;nbsp;&amp;nbsp; %Server%&lt;BR&gt;ECHO Database: %Catalog%&lt;BR&gt;"c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\SqlMetal.exe" /conn:"Data Source=%Server%;Initial Catalog=%Catalog%;Integrated Security=True" /code:dataModel.cs /context:dataModelDataContext /pluralize&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;Μετά το όνομα του αρχείου .cmd δίνω το &lt;STRONG&gt;όνομα της βάσης&lt;/STRONG&gt; και μετά το &lt;STRONG&gt;όνομα του server&lt;/STRONG&gt; που έχει την βάση. Προϋπόθεση είναι να έχει ο λογαριασμός Windows που χρησιμοποιείς πρόσβαση στην βάση. Το SQLMetal φτιάχνει τη κλάση&amp;nbsp;dataModel.cs που μπορείς να κάνεις include στην εφαρμογή σου και να τη πειράξεις όπως θες. Δεν υπάρχει ύπαρξη .dbml αρχείου, και καθένας είναι υπεύθυνος για να συντηρεί την κλάση με τις αλλαγές που γίνονται στο σχήμα της βάσης ή να ξανατρέχει το SQLMetal για να ενημερώνει την κλάση του.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59551.aspx</link><pubDate>Thu, 29 Jul 2010 01:04:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59551</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59551.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59551</wfw:commentRss><description>Πήρα την partial κλάσση και ξεκίνησα manual να γράφω το κώδικα που κρατάει ένα πίνακα ( ο σκοπός είναι να το κάνω με reflection στο τέλος. ) Ετσι έκανα μια partial κλάσση σε ένα άλλο αρχείο και έβαλα το table.&lt;br&gt;Παρατήρησα το εξής, ότι στο dbml έχω όλους τους πίνακες&amp;nbsp; κάπως έτσι : &lt;br&gt;&lt;br&gt;[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Company")]&lt;br&gt;public partial class Company : INotifyPropertyChanging, INotifyPropertyChanged&lt;br&gt;&lt;br&gt;σε ένα πίνακα όμως εχω :&lt;br&gt;[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Department")]&lt;br&gt;public partial class Department&lt;br&gt;&lt;br&gt;Επειδή δεν είχα κάνει τίποτα με το χέρι στο dbml, και ούτε τώρα κάνω, γιατί έχω αυτή την διαφορά; Οκ, δεν έχει relationship με άλλους πίνακες. Ίσως για αυτό;&lt;br&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59548.aspx</link><pubDate>Wed, 28 Jul 2010 23:07:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59548</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59548.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59548</wfw:commentRss><description>Οκ, καταρχήν σε ευχαριστώ για το χρόνο σου...&lt;br&gt;&lt;br&gt;Δεύτερον, φτιάχνω μια απλή εφαρμογή σαν ένα βασικό μοντέλλο και πειραματίζομαι στο asp.net mvc2.&lt;br&gt;&lt;br&gt;Λοιπόν, στην χρησιμοποίηση του LINQ &lt;b&gt;εγώ&lt;/b&gt; δεν έχω καταλάβει ακόμα ότι είναι προαπαιτούμενο το χτίσιμο κλάσσης και για αυτό θα διαφωνήσω. Μπορεί να προωθείται ώς ORM, αλλά όταν γράφω κώδικα και του λέω τράβα φέρε τις χ,ψ εγγραφές και το κάνει χωρίς πολλά πολλά με καθαρό Select σε ένα System.Data.Linq.Table (δεν θυμίζει System.Data.Table του .net v2 ?) , το LINQ είναι layer/framework για βάσεις. Τώρα αν η microsoft το λέει ORM δικαιώμα της. &lt;br&gt;Για παράδειγμα, η δημιουργία ενός dbml με "κλάσεις" τους πίνακες τους ίδιους της βάσης και καλώντας το DataContext για να σου τραβήξει εγγραφές αυτό είναι DataSet με άλλα λόγια να αγαπιόμαστε.&lt;br&gt;&lt;br&gt;Αρά, προφανώς ή το LINQ θέλωντας να είναι κάτι που δεν είναι και τόσο, αλλά είναι και κάτι άλλο με φτάνει τώρα στο "αμήν" έχωντας σπαταλήσει την ώρα μου γιατί ανακαλύπτω ότι δεν μπορώ να προσθέσω πίνακα στο dbml με κώδικα. Και αυτό ήταν σημαντικό.&lt;br&gt;&lt;br&gt;Οπότε, παρακαλώ αν κάποιος γνωρίζει αν στο dbml γίνεται να προσθέσω &lt;b&gt;System.Data.Linq.Table&lt;/b&gt; με κώδικα θα του είμαι υπόχρεος :-)&lt;br&gt;Αν πάλι το Linq δεν κάνει τότε μπορώ να κάνω μια web εφαρμογή με dataset από κάτω, αλλά να μην χαλάσω την έννοια του MVC και των 2-3 φορμών που έχω φτιάξει; Δηλαδή το &lt;b&gt;foreach( var n in Model )&lt;/b&gt; θα λειτουργεί;&lt;br&gt;&lt;br&gt;Αν ούτε το ένα, ούτε το άλλο, τι εναλλακτική υπάρχει;&lt;br&gt;&lt;br&gt;Last : Το χρησιμοποιεί κανείς αυτό --&amp;gt; http://www.plinqo.com/download.ashx&amp;nbsp; ;&lt;br&gt;&lt;i&gt;&lt;font size="1"&gt;Επίσης ανακάλυψα και ένα ενδιαφέρον που δυστυχώς στο NerdTutorial δεν το πήρα χαμπάρι(!) ότι το Linq θέλει πολύ ιδιαίτερη μεταχείριση...&lt;br&gt;Ιδού... http://devermind.com/linq/a-linq-disconnected-mode-abstract-base-class/&lt;/font&gt;&lt;/i&gt;&lt;br&gt;&lt;br&gt;Ευχαριστώ&lt;br&gt;</description></item><item><title>Απ: Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59547.aspx</link><pubDate>Wed, 28 Jul 2010 22:44:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59547</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59547.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59547</wfw:commentRss><description>Έχεις μπλέξει λίγο τί είναι το Linq2SQL. Δεν είναι ο αντικαταστάτης των DataSet αλλά ένα ORM, το οποίο σημαίνει ότι αντιστοιχίζει κλάσεις σε πίνακες. Αν δεν έχεις μία κλάση, δεν έχει νόημα να συζητάς πως θα την αντιστοιχίσεις σε πίνακα. Αν ξαναγράψεις την ερώτηση σου ως "Υπάρχει τρόπος σε .net4 με κώδικα να προσθέσω μία κλάση?" θα καταλάβεις πόσο παράξενη ακούγεται η ερώτηση.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Από εκεί και πέρα, μπορείς γενικά να πειράξεις τα metadata ενός DataContext, εφόσον βέβαια υπάρχει η κλάση σου. Αυτό όμως έχει πολύ φασαρία καθώς το Linq2Sql θέλει οι κλάσεις που χρησιμοποιεί να είναι φτιαγμένες με πολύ συγκεκριμένο τρόπο. Ο μόνος τρόπος να γίνει αυτό χωρίς να γράφεις σεντόνια είναι με .... code generation από ένα ήδη υπάρχον dbml.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Τί ακριβώς θέλεις να κάνεις? Πάω στοίχημα ότι λύνεται πολύ πιο εύκολα από τη δημιουργία κλάσεων και mappings κατά την εκτέλεση της εφαρμογής&lt;/div&gt;</description></item><item><title>Web site και Linq</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59546.aspx</link><pubDate>Wed, 28 Jul 2010 22:33:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59546</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59546.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=59546</wfw:commentRss><description>1. Υπάρχει τρόπος σε ένα dbml με κώδικα ( .net4) να προσθέσω ένα πίνακα, από την βάση που θέλω χωρίς drag'n'drop! και χωρίς εξωτερικά script ? ( Οπως με dataset πριν κανω .Tables.Add() έχω πάρει τις λεπτομέρειες του πίνακα στην μνήμη για να την καλέσω )&lt;br&gt;2. Τελικά αν δεν μπορεί να κάνει αυτή την λεπτομέρεια, με τι μπορώ να αντικαταστήσω το framework (ειδικά τώρα που είναι νωρίς και το ψάχνω το θέμα!) ?!?!?!&lt;br&gt;&lt;br&gt;Αυτό που βρίσκω είναι αναφορές για το SQLMetal(;) το οποίο συγχρονίζει, και άλλη λύση να σβήσεις και να ξαναδημιουργήσεις!!!!!! &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-35.gif" alt="Umbrella" /&gt;&lt;br&gt;&lt;br&gt;</description></item></channel></rss>