Anders Hejlsberg - Programming data in C# 3.0

Download this episode

Download Video


Anders talks about a feature he's working on for C# 3.0 that aims to make data programmable in a general purpose and truly object oriented syntax; something that just doesn't exist today.



Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • yag
      Just wanted to point out that this is actually being worked on by a cross-language team. IOW, this isn't only a C# thing, but should be usable across .NET languages.

    • Charles
      Excellent point. The merging of general purpose and database programming is certainly an effort that will require multiple teams working together. Anders is tasked primarily with thinking about the C# end of the spectrum. This is what he meant by "local focus".

      Thanks for pointing this out, Yag.

    • schweitn
      Of course what he's really talking about is Cw (That's C Omega)...
    • AT
      To accomplish this goal Anders need to go to network databases instead of relational.

      Network databases has much more similarities to OO programming language compared to 0 similarities in relational databases and SQL.

    • magnusander​sson
      I sure hope they have read Foundation for Object / Relational Databases: The Third Manifesto by
      Chris J. Date...
    • gsus
      I am glad to see that C# 3 mixs concepts of the data-programming languages and the general-purpose programming languages. This feature not only refers to SQL, also refers to XPath, XQuery among others. It is the same concept that Comega.
    • lars
      Isn't this something that will be improved with Object Spaces?

      Does Anders have a blog btw?

    • zombie

      I like the idea of seperating object persistence from object programming. Have you considered using attributes to define the object / database mapping in a similar way to XML serialization?

    • scobleizer
      Nope, I asked him if he could do one, but he said he's too busy (has several kids at home).
    • Corvax

      Do you think it will be easier to change data access model instead of programming language? I know the WinFS team has many good ideas in this area. I would prefer to access data from a programming language directly by URL and object model. For example:

        Database db = new Database("db://");
        XML list = db.Search("Author like 'Hugh Darwen'");
        foreach (XML book in list) {
          wishlist.Add(book.Title + ", " + book.ISBN);

    • vonsy

      哪位知道Anders Hejlsberg的blog.暂时还是用delphi.不过c#很棒的。

    • tcholzer

      I think that is terrific for C#, however, to be accurate that ability does exist today in MSFT Visual Foxpro.

    • mattwar
      Anders doesn't have a blog, but I do. 

      I'd be happy to convey what information that I can about data programming in C# 3.0. 

    • radek tereszczuk
      recently ms research had relased prev comega compiler and some docs
    • mattwar

      COmega has a lot of data integration concepts built into it.  Will any of these appear in C# 3.0?  I can't say exactly, except that I was the developer that put them into COmega.  Small world.  Wink

    • astorrs
      I agree with yag, it should definatly be a cross-language team (and one would assume it would be given the depth of the undertaking). I look forward to more posts to give some understanding of how this develops... (i.e. if it expands/encompases COmega or not).
    • yag
      This is a cross-language (and cross-team and cross-division) effort. You'll be seeing more and more over time.

    • joe.​wurzburger
      God, this is so true.  It seems like we spend half of the time in our shop writing freakin' queries inside of our DAL, mapping database types to DAL types and presentation-layer types, and other flavors of data-related plumbing.  It used to seem like debugging was all about finding where I'd accidentally stomped on memory or mismanaged a pointer ... now it seems to be all about a bad character in a SQL string or handling DBNull.Value correctly.

      If there was some compiler awareness of and native control over database constructs, it would be like butter.
    • wOOdy
      Data and OO ? Ever heard of that strange MS product called "Visual FoxPro" ? It's already there since almost 10 years... See

    • Daniel MD

      Hi all, have to agree with wOOdy on this one...

      Microsoft people these days, just try to solve everything with new programming languages, or exotic syntaxes, etc... Never really thinking deep enough about what they are doing, I know you are all very smart people (I hope, at least that is why I bought MSFT stock J ) but adding 10 new features per year on a language should not be the goal, addressing the issues that developers are having problems with, thinking ahead of the curve predicting new problems and spending more time planning than implementing, is what I want from a language vendor, not a new version every 12 months, with more “tricks” to be learned, that wore not properly addressed in previous versions.


      I want issues solved not arisen, by my programming languages.
      The real issues don't need to be solved with programming languages, no C#, J# whatever# or Cw, can fuse two very different ways of managing data.
      Most problems people are facing today will not be solved by new languages nor mixing syntaxes, and I must say that the idea of C# 3.0 being some sort of super-glue (OO/SQL) is very appealing... initially.
      Still, if you think about it for a little wile, that means new and esoteric syntax to be learned, the first version will probably be very limited, it will be very messy, and of course a new version of SQL server will have to be adopted, a new standard will have to be approved so that the other SQL database vendors can be compatible, etc... It will be a very big mess and you know it.


      C# 3.0 Super-Glue, has a higher probability of being a problem than a solution, (added complexity for sure, "oh no COM/COM+ all over again").

      Instead you should improve on proven solutions (TOOLS) Visual FoxPro, is a great tool, developing the proper tools in my opinion is the way MS, SUN, etc... Should be going, pass the Imperative, go Declarative, but use the proper tools to make Declarative a proper developer ecosystem.


      IMHO new, innovative, better tools is the way to go.

      Oh boy, I let myself get a little carried away, sorry for the long post. But I believe those building new tools that make the developer life easier, and enable him to be more productive, more creative, and simply more fun will be the winners.

      Best Regards,
      DAniel MD

    • PQ
      I've been playing around with the Comega preview and am looking for a hint on how to bind a stream to a datagrid or similar tabular structure in a form. Can I assign a stream in some way to the Datasource property of a Datagrid? How do I specify the members to be displayed?

      Any clues?
    • tamir
      Just for fun Wink Following my article
    • littleguru
      Perhaps Opf3 can fill the gap already with .net 2.0 ?

      It's actually doing the mapping by using attributes.

    • uritsukidoji
      I created an article on what I miss comparing Delphi to C#, and how it could be improved. Also related to COmega.

      I'd like some comments on it, though it's not very in-depth, just some small language features that I'd like to see changed or added...
    • Filip

      If it is anything like Comega, that would be absolutely great. 

      While you are at it, could you include the Spec# features ( as well? That would be great for both developer productivity (less runtime bugs to track down) as well as for the user!

      Any news on including Spec# in C# 3.0?

    • pareklund
      Coming from the Java world and just having dived into the world of .Net, I thought that Microsoft's view on this was more a pragmatic one, viewing Java's fascination with persistence layers as a mere academic exercise catering to unsatisfied egos and instead focusing on "getting the job done" without digging too deep into the Pandora´s Box of object/relational mappings. Having said that, I don't say that the ideas of extending C# with object/relational mapping constructs are necessarily wrong. For example, having used the open source library/product/framework Hibernate for that in my latest project was clearly a positve experience. However, I wonder if putting the equivalent(?) into the language itself is the way to go. The KISS principle should be applicable here as well. In my humble, newbie view, C# is already balancing on the edge, with simplicity and elegance on one side (an improved Java) and with complexity and too many sharp (pun intended) edges (C++++) on the other. Adding to this the functionality of Comega might tip it off in the wrong direction and alienating developers as a result due to the resulting complexity. So, my question is really: Wouldn't it be enough to settle for an addition to the class libraries - say, like a .Net-ified Hibernate - instead of cramming even more expressiveness into an already very expressive core or is it really proven necessary to add native operators to achieve the desired results? Btw., are there alternative .Net libraries (open source or commercial) that provide object/relational persistence (corresponding to Java's Hibernate) already? Please, view my opinions as curiosity, not criticism. Wink Regards /Par Eklund --- Why doesn't newlines work for my post? --
    • radek tereszczuk
      there is net hibernate version  - nhibernate - works very well


      it is not the same as comega ; not everything can be done thru librariers :O)

      "data store / imperativ code impedance mismatch" problem for sure has to be solved (and allready is - but only in academia not in mainstream - a lot of those "object" databases do not have ability to execute imperativ code on database and only allows to store "object" data structures)

      for sure ms will do something with this informatics holy grail - watch out for september and first WinFS public info @pdc2005
    • janbannister
    • falken

      Have you seen ? Although not .NET tool, I can deeply recommend to look at this kind of development IDE. It is completely integrated platform. At least reading FAQ and intro about suneido can provide quick "voila!" for you. I am currently working in c# for smart devices (netcf), but IDEAS od Suneido are very good. Main concept of source code library stored structurally in RDBMS, driven by very little "kernel" is practically the same as concept of czech RDBMS PC-FAND, 15 years old.
      Both these tools are build for DATA processing and specifically FAND "THE PROBLEM descriptability" is far more powerfull and easier than in any SQL based RDBMS today, may be Yukon CAN be nearest ......

    • bill_g
      Well if Anders would have just implemented the simplicity of database interfaces that was done in Delphi.  It wouldn't be such a major issue with C#.

    • reinux
      .NET's getting messier and messier... sigh.

      Someday they need to ditch backwards compatibility and start fresh again -- throw out System.Collections excluding generics, throw out anonymous delegates etc.

      And for God's sakes, please don't mix API names with platform names. .NET 3.0 is the last .NET there can be short of another insane branding change. They threw a wrench into it. Literally.

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.